Onde está documentado o ABI System V x86-64?

A ABI x86-64 System V (usada em tudo, exceto no Windows) costumava ser usada em http://x86-64.org/documentation/abi.pdf , mas esse site agora caiu da Internet.

Existe um novo lar autoritativo para o documento?

   

O sistema V x86-64 psABI é mantido no GitHub. A página do github do HJ Lu tem um wiki com links para as versões atuais dos documentos psABI x86-64 e i386 SystemV, e para os fóruns onde as atualizações são discutidas.

Veja o wiki da tag x86 para links diretos para as versões mais recentes. (Esta resposta pode estar desatualizada).

A partir de agora, a versão atual do x86-64 é r252 (Rascunho 0.99.8 de abril de 2016) e a versão atual do i386 é 1.1 (inclui o AVX512). Não oficialmente, argumentos estreitos de extensão de sinal para 32 bits são necessários , porque o clang depende dele. Esperemos que uma futura revisão da ABI documentará isso.

O x32 ABI (pointers de 32 bits no modo longo) faz parte do documento ABI x86-64. Veja o Capítulo 10: Modelo de Programação ILP32.


Observe que os documentos psABI específicos do processador foram criados como um complemento ao gABI do System V , menos atualizado, hospedado no site da SCO.


Relacionados: Quais são as convenções de chamada para as chamadas do sistema UNIX e Linux em i386 e x86-64 descrevem a convenção de chamada de sistema para o x86-64 SysV (bem como para o i386 Linux vs. FreeBSD).

Também resume as convenções de chamada de function para argumentos inteiros. As chamadas de sistema não recebem argumentos vetoriais FP ou SSE / AVX ou estruturas por valor, portanto, a convenção de chamada de function é mais complicada.


O Agner Fog possui um guia de convenções de chamada (que abrange o Windows vs. Sys V e as várias convenções para 32 bits e dicas / truques para funções de gravação que você pode usar em qualquer plataforma). Este é um PDF separado de seus guias de otimização e microarquitetura e tabelas de instruções (que são leitura essencial se você se preocupa com o desempenho).

A Wikipédia possui um artigo de convenções de chamada x86 que descreve várias convenções, mas a maioria não fornece detalhes suficientes para usá-las para algo diferente de simples argumentos inteiros. (por exemplo, sem descrição das regras de embalagem estruturada).