Assembly x86-64Registradores
Uso geral
Os 16 registradores de 64 bits e seus papéis
Registradores de uso geral
Os 16 registradores de 64 bits e o papel que cada convenção costuma dar a eles. Os nomes herdados do x86 antigo (A de acumulador, C de contador…) hoje são só tradição — quem fixa o papel é a convenção de chamada, não o hardware.
| 64 bits | Papel típico |
|---|---|
| rax | Acumulador. Valor de retorno de funções e número da syscall no Linux. |
| rbx | Base. De uso livre; preservado entre chamadas nas duas convenções. |
| rcx | Contador (loops, shifts). 1º argumento no Windows, 4º argumento no System V. |
| rdx | Dados. Argumento e metade alta de retornos/produtos de 128 bits. |
| rsi | Source index (operações de string). 2º argumento no System V. |
| rdi | Destination index (operações de string). 1º argumento no System V. |
| rbp | Base pointer: ancora o quadro de pilha da função atual. |
| rsp | Stack pointer: aponta para o topo da pilha. Nunca use para dados comuns. |
| r8 | 5º argumento no System V, 3º no Windows. |
| r9 | 6º argumento no System V, 4º no Windows. |
| r10 | Scratch. Recebe o 4º argumento na instrução syscall do Linux. |
| r11 | Scratch. A instrução syscall o destrói (salva o RFLAGS ali). |
| r12 | De uso livre; preservado entre chamadas nas duas convenções. |
| r13 | De uso livre; preservado entre chamadas nas duas convenções. |
| r14 | De uso livre; preservado entre chamadas nas duas convenções. |
| r15 | De uso livre; preservado entre chamadas nas duas convenções. |