Voltar à lista
Assembly x86-64Memória

Modos de endereçamento

[base + índice*escala + desloc] e o lea

Modos de endereçamento de memória

Um operando de memória no x86-64 tem a forma geral [base + índice*escala + deslocamento], onde a escala é 1, 2, 4 ou 8. Nem toda parte precisa estar presente — abaixo, do mais simples ao mais completo. Lembre que lea calcula esse endereço sem tocar na memória, o que o torna útil também para aritmética.

ModoExemploDescrição
Imediatomov rax, 42Uma constante embutida na própria instrução.
Registradormov rax, rbxO operando é o valor de um registrador.
Diretomov rax, [0x600000]Um endereço absoluto de memória.
Indiretomov rax, [rbx]O endereço está num registrador (ponteiro).
Base + deslocamentomov rax, [rbp - 8]Registrador base mais um deslocamento constante — variáveis locais.
Base + índice*escalamov rax, [rdi + rcx*8]Acesso a arrays: escala ∈ {1,2,4,8}.
Base+índice*escala+deslocmov rax, [rdi + rcx*8 + 16]A forma completa do endereço efetivo do x86.
Relativo a RIPlea rsi, [rel msg]Deslocamento a partir de RIP — a base do código independente de posição (PIC).