Voltar à lista
Assembly x86-64Registradores

Especiais

RIP, RFLAGS, RSP/RBP, FS/GS e os vetoriais

Registradores especiais

Além dos de uso geral, alguns registradores têm função dedicada — controlam o fluxo de execução, o estado da pilha e o acesso a dados por-thread.

ripInstruction Pointer

Endereço da próxima instrução a executar. Não é lido/escrito diretamente — muda com jmp, call e ret, e é usado no endereçamento relativo a RIP (lea rsi, [rel msg]).

rflagsFlags

Bits de status e controle: ZF (zero), CF (carry), SF (sinal), OF (overflow), DF (direção de string) e IF (interrupções). Aritmética e cmp o definem; saltos condicionais (je, jg, …) o leem.

rspStack Pointer

Topo da pilha. push/pop, call/ret e o prólogo/epílogo de funções o movem. Deve estar alinhado em 16 bytes no momento de um call.

rbpBase Pointer

Frame pointer: aponta para o quadro de pilha atual, dando um ponto fixo para acessar argumentos e variáveis locais. Otimizações podem omiti-lo (frame-pointer omission).

fs / gsBases de segmento

No x86-64 os segmentos são planos, mas FS e GS ainda fornecem uma base para dados por-thread: o Linux usa FS para o TLS; o Windows usa GS para o TEB/PEB.

xmm / ymm / zmmSIMD e ponto flutuante

Registradores vetoriais de 128/256/512 bits (SSE, AVX, AVX-512). Também transportam argumentos e retornos de ponto flutuante nas convenções de chamada.