Interface binária de aplicação

A Interface Binária de Aplicação (de sigla ABI, do inglês Application Binary Interface) é uma interface (ligação) de baixo nível entre uma aplicação computacional e o sistema operacional do dispositivo e, entre a aplicação e suas bibliotecas, ou entre componentes de uma aplicação.

Descrição editar

Uma ABI difere de uma Interface de Programação de Aplicativos (ou API, sigla do 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 editar

Uma Interface Binária de Aplicação Embarcada (ou EABI, sigla do 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]

Uso editar

Arm64EC: quando um sistema é instalado em uma máquina que usa processador ARM mas o usuário precisar usar programas/aplicativos do tipo x86 ou x64, a execução deste é feita usando emulação.[5] Porém este procedimento possui um desempenho de execução menor que a execução de forma nativa, assim para minimizar este problema o sistema operacional WIndows na versão 10 e 11 usa o ABI Arm64EC.[5] Que combina no mesmo programa o código ARM e o código x64, onde a parte mais importante (fundamental) é baseada em ARM para ser executado nativamente, enquanto recursos complementares são emuladas em x64 (extensões/funções específicas).[5]

Ver também editar

Referências

  1. PowerPC Embedded Application Binary Interface: 32-Bit Implementation (Version 1.0 ed.). Freescale Semiconductor, Inc. 1995-10-01. pp. 28–30.EABI Summary
  2. "PowerPC Embedded Processors Application Note"
  3. Linuxdevices.com. 2007-01-19. Retrieved 2007-10-11.Debian ARM accelerates via EABI port
  4. Andrés Calderón and Nelson Castillo (2007-03-14), Why ARM's EABI matters. Linuxdevices.com. Retrieved 2007-10-11.
  5. a b c «Arm64EC é a arma da Microsoft para o Windows 11 rodar bem com chip Arm». Tecnoblog. Consultado em 7 de maio de 2024