ExpertiDict

C · Avançado · Português · Técnico

convenção de chamada

/kõ.vẽ.ˈsɐ̃w̃ dʒi ʃa.ˈma.dɐ/substantivo

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

Veja também

Todos os termos de C