Voltar à lista
Assembly x86-64Convenções

Convenção de chamada

System V (Linux) × Microsoft x64 (Windows)

Convenções de chamada

Ao chamar uma função (não uma syscall), cada sistema segue uma convenção diferente sobre em quais registradores os argumentos entram e onde o valor volta. Linux usa a System V AMD64 ABI; Windows usa a Microsoft x64.

System V AMD64Linux · macOS · BSD
Argumentos (em ordem)
1rdi2rsi3rdx4rcx5r86r9
Retornorax (e rdx para 128 bits)
  • Argumentos além do 6º vão para a pilha (da direita para a esquerda).
  • Ponto flutuante usa xmm0–xmm7 para argumentos e xmm0/xmm1 para retorno.
  • Não há shadow space; a pilha deve estar alinhada em 16 bytes na chamada.
Microsoft x64Windows
Argumentos (em ordem)
1rcx2rdx3r84r9
Retornorax
  • Apenas 4 registradores de argumento; o 5º em diante vai para a pilha.
  • O chamador reserva 32 bytes de shadow space (home space) antes do call.
  • rsi e rdi são preservados (callee-saved) — ao contrário do System V.