Articles of abi

É necessário um sinal ou extensão zero ao adicionar um deslocamento de 32 bits a um ponteiro para o ABI x86-64?

Resumo: Eu estava olhando o código assembly para orientar minhas otimizações e ver muitas extensões de sinal ou zero ao adicionar int32 a um ponteiro. void Test(int *out, int offset) { out[offset] = 1; } ————————————- movslq %esi, %rsi movl $1, (%rdi,%rsi,4) ret No começo, achei que meu compilador foi desafiado a adicionar inteiros de […]

O que é uma interface binária de aplicativo (ABI)?

Eu nunca entendi claramente o que é uma ABI. Por favor, não me aponte para um artigo da Wikipedia. Se eu pudesse entender, não estaria aqui postando um post tão longo. Esta é a minha mentalidade sobre diferentes interfaces: Um controle remoto da TV é uma interface entre o usuário e a TV. É uma […]

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?

Como faço para passar com segurança objects, especialmente objects STL, para e de uma DLL?

Como faço para passar objects de class, especialmente objects STL, para e de uma DLL de C ++? Meu aplicativo tem que interagir com plug-ins de terceiros na forma de arquivos DLL, e não posso controlar com qual compilador esses plug-ins são criados. Estou ciente de que não há garantia de ABI para objects STL […]

O que acontece se você usar o int de 0x bits Linux ABI de 80 bits no código de 64 bits?

int 0x80 no Linux sempre invoca a ABI de 32 bits, independentemente de qual modo ela é chamada: args em ebx , ecx , … e syscall em /usr/include/asm/unistd_32.h . (Ou falha em kernels de 64 bits compilados sem CONFIG_IA32_EMULATION ). O código de 64 bits deve usar syscall , com números de chamada de […]

Quais são as convenções de chamada para chamadas do sistema UNIX e Linux em i386 e x86-64?

Os links a seguir explicam as convenções de chamada do sistema x86-32 para UNIX (versão BSD) e Linux: http://www.int80h.org/bsdasm/#system-calls http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html Mas quais são as convenções de chamada do sistema x86-64 no UNIX e Linux?