Sunteți pe pagina 1din 5

Juliano Rocha Barbosa

1. Qual o conjunto de instrues do Pentium e ARM?


Pentium
O Pentium est equipado com uma variedade de formatos de instrues, estando sempre presente o
cdigo da operao. As instrues podem ter desde zero a quatro prefixos opcionais de instruo, um ou dois
octetos para o cdigo de operao, um campo opcional para especificar o endereo que consiste do
octeto Mod r/m e do octeto de Escala do ndice, um deslocamento opcional e um campo imediato opcional.
Os componentes da instruo so:

Cdigo de Operao: um ou dois octetos de cdigo. O cdigo de operao pode tambm incluir bits
que especificam se o dado de um octeto ou de tamanho completo (16 ou 32 bits dependendo do
contexto), direco da operao sobre o dado (de ou para a memria) e se deve ser feita a extenso de
sinal de um campo de dados imediato.

Mod r/m: Este octeto e o prximo, fornecem informao de endereamento. O octeto Mod r/m
especifica se um operando est em registo ou em memria; se est na memria, ento, os campos
dentro octeto especificam o modo de endereamento a ser usado. O octeto Mod r/m consiste de trs
campos. O campo Mod (2-bits) combinado com o campo r/m para formar 32 possveis valores: 8
modos de registo e 24 modos de indexao; o campo Reg/Opcode (3-bits) pode especificar um registo
como a localizao de um operando, ou pode fazer parte da codificao do modo de endereamento
em combinao com o campo Mod.

SIB: Certas codificaes do octeto Mod r/m especificam a incluso de octeto SIB especificar
completamente o modo de endereamento. O octeto SIB consiste de 3 campos: O campo SS (2 bits)
especifica o factor de escala para indexao escalada; o campo ndice (3 bits) especifica o registo de
ndice; o campo Base (3 bits) especifica o registo base.

Deslocamento: Quando o especificao do modo de endereamento indica que usado um


deslocamento, um de deslocamento inteiro com sinal de 8, 16 ou 32-bits adicionado.

Imediato: Fornece o valor de um operando de 8, 16 ou 32-bits.

Os cdigos de operao disponveis so:


Transferncia de Dados: MOV (movimentao), MOVSX (ext. sinal), MOVZX (ext. c/ zero), PUSH
(empilhamento), PUSHW/PUSHD (imedit./ 32 bits), PUSHA/PUSHAD (todos reg/ 32 bits),
PUSHF/PUSHFD (16 bits flags/32 bits), POP (desemp.), POPA/POPAD (todos reg/32 bits), POPF/POPFD
(16 bits flags/32 bits), IN (input), OUT (output), XCHG (permuta), XLAT (translate-table), LEA (carga de
end. efetivo), LDS (carga de ponteiro), BSWAP (troca), LAHF (carga de flags em AH), SAHF (arm. de AH
nos).
Aritmtica: ADD (adio), ADC, INC (incremento), SUB (subtrao), SBB, DEC (decremento), CMP
(comparao), MUL (multiplicao), IMUL, DIV (diviso), IDIV, NEG (complemento a 2), CBW
(mudana de mdulo), CWD, DAA (ajuste BCD), DAS, AAA (ajuste ASCII), AAS, AAM, AAD.
Instrues Lgicas: NOT, AND, OR, XOR, TEST.
Manipulao de bits: SHL/SAL (desloc. Esquerda), SHR (deslc. Direita), SAR, ROL (rotao), ROR,
RCL, RCR.

Laos e Desvios: JMP (desvio incondicional), Jcc (desvio condicional), JCXZ, LOOP (lao), LOOPE,
LOOPNE.
Subrotina e interrupes: CALL (sub-rotinas), INT (interrupes), INTO, RET (retorno), IRET.
Controle Strings: DS:SI Aponta para o primeiro elemento da String fonte, ES:DI Aponta para o primeiro
elemento da String destino
ARM
A arquitetura ARM trabalha com dois tipos de instrues: o ARM e o THUMB.
O conjunto de instrues ARM pode ser dividido em 6 classes:

Instrues de branch
Todos os processadores ARM suportam instrues de branch com saltos condicionais para frente ou para trs
de at 32M. Saltos mais longos podem ser feitos atravs de chamadas de subrotinas como por exemplo o
Branch whith Link (BL) que mantem o endereo de retorno no LR (R14).

Instrues de processamento de dados


O ARM possui 16 instrues mostrada na tabela a seguir:

Instrues de acesso ao registrador de estado


Existem duas instrues para mover os contedos de um registrador de propsito geral e de um
registrador de estado, que so as seguintes:
MRS move o contedo do registrador de estado para um registrador de propsito geral.
MSR move o contedo do registrador de propsito para um registrador de estado.

Instrues de Load e Store

A arquitetura ARM suporta dois tipos de instrues de load e store que transferem o contedo de um
registrador para a memria ou ao contrrio.
O primeiro tipo pode carregar ou escrever uma parava de 32 bits ou um byte sem sinal.
O segundo tipo pode ler ou escrever meia palavra de 16 bit sem sinal, e pode carregar e sinalizar meia palavra
de 16 bit ou um byte. Este tipo de instruo est disponvel apenas para a arquitetura ARM verso 4 ou
posterior.

Instrues geradoras de excees


Existe duas instrues deste tipo:
A SWI que causa uma interrupo de software. o mecanismo principal utilizado pelo ARM para poder
executar codigos do Sistema Operacional no modo de usurio (User Mode).
E existe o BKPT. Esta instruo usada para breakpoints na arquitetura ARM da verso 5 em diante.
A maioria destas instrues acima contm um campo de condio de 4 bits. Estas condies so ativadas
atravs de sufixos que so colocados junto com os minemnicos das instrues. Por exemplo, um salto (B)
pode ser acompanhado de um NE (not equal), o que gera uma expresso BNE. Essa instruo s ser
executada caso a condio seja verdadeira.

2. Como os bytes dentro de uma palavra e os bits dentro de um byte so referenciados e


representados?
Existem dois tipos de ordenao dos bytes em palavras que esto relacionados a forma com que o byte
referenciado e representado, eles so conhecidos como Little Endian, Big Endian, ou ainda o Biendian(quando as duas formas so possveis).
Com relao aos bytes, o tipo de endian tem a ver com a ordenao dos bytes de valores escalares em
mltiplos bytes. Existem duas formas de organizar os bytes em uma palavra, seja o valor 453212, sendo que
em cada byte da palavra caber dois dgitos do nosso valor, na primeira forma de representar os bytes
colocamos os primeiro valor no primeiro local de byte a primeira parte do valor, e assim sucessivamente, esta
forma com o byte mais significativo no endereo de byte numrico mais baixo conhecida como big-endian
e equivalente a escrever da esquerda para a direita (como na cultura ocidental). J a segunda forma,
conhecida como litte-endian, armazena o byte menos significativo no endereo de byte numrico mais baixo
(da direita para a esquerda) e um remanescente da ordem da direita para a esquerda das operaes
aritmticas. Mas, em qualquer mquina, agregados como arquivos, estruturas de dados e arrays so compostas
de mltiplas unidades de dados, cada uma com um tipo de endian.
Quanto ao bit dentro de um byte, temos duas questes, a primeira se voc conta o primeiro bit como
bit zero ou como bit um, e a segunda se voc atribui o nmero de bit mais baixo ao bit menos significativo
do byte (little-endian) ou ao bit mais significativo (big-endian). Essas questes no so respondidas da mesma
maneira em todas as mquinas, alm disso, na realidade, existem mquinas em que as respostas so diferentes
dependendo das circunstncias, e tambm a escolha da ordenao de bits big-endian ou little-endian pode
variar dependendo do contexto. Ao manipular bits individuais o programador precisa se preocupar com estas
questes.

3. Quais os modos de endereamento do Pentium e ARM?


Modos de endereamento do ARM:

Contm 6 modos de endereamento. As instrues Load e Store utilizam o valor armazenado em um


registrador base, e um valor offset para obter os endereos de memria. Esse procedimento dispe de trs
formas de indexao:
Offset: o endereo de memria formado pela adio do registrador base com o offset;
Pr-indexao: feito o mesmo procedimento citado acima, mas, o endereo obtido armazenado no
registrador base, resultando em incremento ou decremento do registrador base;
Ps-indexao: utiliza-se como endereo o valor do registrador base, e, depois, o offset e adicionado ao
registrador base ou subtrado dele.
As operaes de processamento de dados utilizam o modo de endereamento direto, referenciando
diretamente os registradores, e podem combinar o contedo dos registradores com valores imediatos. As
instrues de desvio contm um campo de 24 bits para o endereo de destino, o que requer o deslocamento
para que seja obtido o endereo de 32 bits, e explica a distncia mxima de 32MB para os desvios. Por fim, as
instrues Load/Store em blocos, utilizam um registrador e fazem incremento/decremento antes ou depois,
para cobrir a faixa de endereos de memria que ser lida ou escrita.

Modos de endereamento do Pentium:


Pentium est equipado com uma variedade de modos de endereamentos desenhados para permitir a
execuo eficiente de linguagens de alto-nvel tais como o C e o Fortran.
Para o modo imediato o operando est includo na instruo. O operando pode ser um octeto, palavra,
ou dupla palavra.
Para o modo operando em registo, o operando est localizado num registo. Para as instrues gerais
tais como transferncia de dados, aritmticas e lgicas, o operando pode ser um dos registos gerais de 32-bits
(EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP), um dos registos gerais de 16-bits (AX, BX, CX, DX, SI, DI,
SP, BP) ou um dos registos gerais de 8-bits (AH, BH, CH, DH, AL, BL, CL, DL)
H, tambm, algumas instrues que referenciam os registos de segmentos (CS, DS, ES, SS; FS, GS).
Os modos de endereamento restantes referenciam posies da memria. A posio de memria tem
de ser especificada em termos de segmentos contendo a posio e o desvio do incio do segmento.
No modo deslocamento, o desvio do operando (o endereo efectivo da figura 10.2) faz parte da
instruo como um deslocamento de 8, 16, ou 32-bits. Com segmentao, todos os endereos na instruo
referem-se meramente a um balancear dentro do segmento. Os restantes modos de endereamento so
indirectos, no sentido que a poro de endereo da instruo diz ao processador onde procurar o endereo.
No modo ndice com escala e deslocamento a instruo inclui um deslocamento a ser adicionado a
um registo, neste caso um registo ndice. O registo ndice pode ser qualquer registo de uso-geral excepto o
designado por ESP, que habitualmente usado para processamento da pilha.
O modo base com ndice e deslocamento soma o contedo do registo base, do registo ndice e um
deslocamento para formar o endereo efectivo. De novo, o registo base pode ser qualquer registo de uso-geral
o registo ndice pode ser qualquer registo de uso-geral excepto ESP.
O modo base e ndice com escala e deslocamento soma o contedo do registo ndice multiplicado
por um factor de escala, o contedo do registo base e o deslocamento. Isto til se um vector guardado num
caixilho da pilha; neste caso, os elementos do vector seriam de 2, 4 ou 8 octetos cada em comprimento.
No modo de endereamento relativo pode ser usado em instrues de transferncia de controlo. Um
deslocamento adicionado ao valor do contador de programa, que aponta para a prxima instruo. Neste
caso o deslocamento tratado como um valor com sinal, octeto, palavra, ou dupla palavra e aquele valor
aumenta ou diminui o endereo no apontador de programa.