Uma interface binária de aplicação (ou ABI, do inglês application binary interface) descreve a interface de baixo nível entre uma aplicação e o sistema operacional, entre a aplicação e suas bibliotecas ou entre componentes de uma aplicação.
Descrição
Uma ABI difere de uma interface de programação de aplicativos (ou API, em inglês, aplication programming interface) na medida em que uma API defina a interface entre o código fonte e as bibliotecas, de forma que o mesmo código fonte compila em qualquer sistema operacional que suporte a API. A ABI permite que o código objeto compilado funcione sem alterações em qualquer sistema compatível com a ABI.
O desenvolvimento de ABI cobre detalhes como convenções de chamada, que controlam como os argumentos de uma função são passados e como os valores de retorno são obtidos; os números das chamadas de sistema e como uma aplicação deve realizar chamadas de sistema para o sistema operacional; e no caso de uma API completa para sistema operacional, o formato binário de um arquivo objeto. Uma ABI completa, como a iBCS da Intel, permite a um programa de um sistema operacional rodar em outro sistema, desde que ambos suportem a ABI.
Interface binária de aplicação embarcada
Uma interface binária de aplicação embarcada (ou EABI, em inglês, embedded-application binary interface) especifica os padrões de formatos de arquivos, tipos de dados, uso de registradores, organização da pilha e passagem de parâmetros de funções de um firmware.
Compiladores que suportam EABI geram código objeto que é compatível com o código objeto gerado por compiladores dentro do padrão, permitindo, então, que desenvolvedores liguem bibliotecas geradas com certo compilador ao código objeto gerado com um compilador diferente. Desenvolvedores que escrever em assembly podem também se beneficiar utilizando o código em assembly gerado por outro compilador que também segue o padrão EABI.
A principal diferença entre a EABI e uma ABI para sistemas operacionais de uso genérico é que instruções privilegiadas são permitidas no código da aplicação, além de que a ligação dinâmica não é necessária (às vezes completamente desabilitada) e uma organização mais complexa da estrutura da pilha é usada para economizar memória[1].
O padrão EABI é largamente usado nas arquiteturas PowerPC[2] e ARM.[3][4]
Ver também
- API
- Convenção de chamada de funções
- Chamada de sistema
- Programação de computadores
- Vinculação de nomes
Referências
- ↑ PowerPC Embedded Application Binary Interface: 32-Bit Implementation (Version 1.0 ed.). Freescale Semiconductor, Inc. 1995-10-01. pp. 28–30.EABI Summary
- ↑ "PowerPC Embedded Processors Application Note"
- ↑ Linuxdevices.com. 2007-01-19. Retrieved 2007-10-11.Debian ARM accelerates via EABI port
- ↑ Andrés Calderón and Nelson Castillo (2007-03-14), Why ARM's EABI matters. Linuxdevices.com. Retrieved 2007-10-11.