C · Avançado · Português · Técnico
convenção de chamada
Regras de uma plataforma sobre como argumentos e retorno passam entre funções: em quais registradores ou posições da pilha ficam e quem limpa a pilha depois.
Onde usar
Importa ao misturar C com assembly, ao usar FFI de outra linguagem ou ao ler um backtrace. Dois binários só se entendem se concordarem na convenção, como System V AMD64 ou a do Windows x64.
Em código
long soma(long a, long b) {
return a + b;
}
/* System V x86-64: a=rdi, b=rsi, ret=rax */
/* gcc -O1 -S soma.c mostra o assembly */Exemplos
Para chamar essa rotina em assembly, siga a convenção de chamada do System V.
O crash veio de um callback declarado com outra convenção de chamada.
Cuidado
Supor que toda plataforma passa argumentos do mesmo jeito: no System V x86-64 os seis primeiros inteiros vão em registradores, no Windows x64 apenas quatro.
Sinônimos
calling convention