Registrar o uso
O x64 a arquitetura fornece 16 registradores de propósito gerais (doravante referidas como inteiro registra), bem como registradores de 16 XMM disponíveis para uso de ponto flutuante. Registradores voláteis são transitórios registradores presumed pelo chamador a ser destruído através de uma chamada. Registradores de não-volátil são necessárias para manter seus valores em uma chamada de função e devem ser salvo pelo receptor se usado.
A tabela a seguir descreve como cada registro é usado em chamadas de função:
Registrar |
Status |
Use |
RAX |
Volátil |
Registre-se o valor de retorno |
RCX |
Volátil |
Primeiro argumento inteiro |
RDX |
Volátil |
Segundo argumento de inteiro |
R8 |
Volátil |
Terceiro argumento de inteiro |
R9 |
Volátil |
Quarto argumento de inteiro |
R10:R11 |
Volátil |
Deve ser preservado conforme necessário pelo chamador; usados nas instruções de syscall/sysret. |
R12:R15 |
Não-volátil |
Deve ser preservado pelo chamador |
RDI |
Não-volátil |
Deve ser preservado pelo chamador |
RSI |
Não-volátil |
Deve ser preservado pelo chamador |
RBX |
Não-volátil |
Deve ser preservado pelo chamador |
RBP |
Não-volátil |
Pode ser usado como um ponteiro de quadro; deve ser preservado pelo chamador |
RSP |
Não-volátil |
Ponteiro de pilha |
XMM0 |
Volátil |
Primeiro argumento do FP |
XMM1 |
Volátil |
Segundo argumento do FP |
XMM2 |
Volátil |
Terceiro argumento do FP |
XMM3 |
Volátil |
Quarto argumento FP |
XMM4:XMM5 |
Volátil |
Deve ser preservado conforme necessário pelo chamador |
XMM6:XMM15 |
Não-volátil |
Devem ser preservadas conforme necessário pelo receptor. |