Rodolfo Azevedo
MC404 - Organização Básica de Computadores e Linguagem de Montagem
http://www.ic.unicamp.br/~rodolfo/mc404
16 registradores de uso geral: r0, r1, … r15
Convenção de uso
13 de uso geral: r0 … r12
3 de uso especial: r13, r14, r15
Atenção para o PC como um registrador de uso geral
gcd: cmp r0, r1 beq fim blt menor sub r0, r0, r1 bal gcd menor: sub r1, r1, r0 bal gcd fim:
gcd: cmp r0, r1 subgt r0, r0, r1 sublt r1, r1, r0 bne gcd
ldr r0, [r1, #12]
str r5, [r9, #-20]
STM e LDM executam mais de uma operação de memória.
Precisam de um sufixo para indicar a direção desejada do acesso à memória:
LDM<sufixo> r1, {r0, r2, r3}
STM<sufixo> r1, {r0, r2, r3}
Facilita a implementação da pilha ao utilizar o sufixo FD
STMFD r13!, {r4-r7}
LDMFD r13!, {r4-r7}
A esclamação atualiza o registrador de índice com o último valor
mov [edx], eax mov [ebx+ebp], eax mov [esi+edi], eax mov [esp+ecx], eax mov [ebx*4 + 0x1a], eax mov [ebx + ebp*8 + 0xab12cd34], eax mov [esp + ebx*2], eax mov [0xffffaaaa], eax mov [esp*2], eax
PUSH
POP
JMP
JE
JNE
JG
JL
JGE
JLE
CMP
Instrução CALL para chamar uma função
CALL
Instrução RET para retornar de uma função
RET
O padrão original é passar parâmetros pela pilha com PUSH e POP
A CALL empilha o endereço de retorno
A RET desempilha o endereço de retorno
MOV
ADD
SUB
INC
DEC
AND
OR
XOR
NOT
NEG
MULT
DIV
XCHG
SHL
SHR
MOVSB
MOVSW
MOVSD
MOVSQ
REPCXZ MOVSB