Voltar à lista
Assembly x86-64Convenções

Volátil × preservado

Quem o chamador salva e quem a função restaura

Volátil × preservado

Um registrador volátil (caller-saved) pode ser destruído por uma função chamada — se você precisa do valor depois, salve-o antes. Um preservado (callee-saved) tem que ser restaurado pela função antes de retornar. As duas convenções discordam em pontos importantes — em especial rsi e rdi, voláteis e usados como argumento no Linux, mas preservados no Windows.

RegistradorSystem V (Linux)Microsoft x64 (Windows)
raxRetorno · volátilRetorno · volátil
rdi1º argumento · volátilPreservado
rsi2º argumento · volátilPreservado
rdx3º argumento · volátil2º argumento · volátil
rcx4º argumento · volátil1º argumento · volátil
r85º argumento · volátil3º argumento · volátil
r96º argumento · volátil4º argumento · volátil
r10 / r11Volátil (r10 = 4º arg na syscall)Volátil
rbxPreservadoPreservado
rbpPreservado (frame pointer)Preservado (frame pointer)
rspPonteiro de pilha (preservado)Ponteiro de pilha (preservado)
r12–r15PreservadoPreservado