Interficie binaria d'aplicacio

De la Viquipedia, l'enciclopedia lliure
Una comparacio d'alt nivell de les API i ABI del nucli i del nucli a l'espai d'usuari.

En programari informatic , una interficie binaria d'aplicacio ( ABI ) es una interficie entre dos moduls de programa binari. Sovint, un d'aquests moduls es una biblioteca o instal·lacio del sistema operatiu , i l'altre es un programa que esta executant un usuari. [1]

Un ABI defineix com s'accedeix a les estructures de dades o rutines computacionals en codi maquina , que es un format de baix nivell que depen del maquinari. En canvi, una interficie de programacio d'aplicacions (API) defineix aquest acces al codi font , que es un format relativament alt, independent del maquinari, sovint llegible per l'home . Un aspecte comu d'un ABI es la convencio de crida , que determina com es proporcionen les dades com a entrada o com a sortida de les rutines computacionals. Exemples d'aixo son les convencions de crida x86 .Adherir-se a un ABI (que pot o no estar estandarditzat oficialment) sol ser feina d'un compilador , sistema operatiu o autor de biblioteca. Tanmateix, un programador d'aplicacions pot haver de tractar directament amb un ABI quan escriu un programa en una barreja de llenguatges de programacio, o fins i tot compila un programa escrit en el mateix llenguatge amb compiladors diferents. [2]

El nucli de Linux i la biblioteca GNU C defineixen l' API de Linux . Despres de la compilacio, els binaris ofereixen un ABI. Mantenir aquest ABI estable durant molt de temps es important per als ISV .

Un ABI es tan important com l'arquitectura de maquinari subjacent. El programa fallara igualment si infringeix qualsevol restriccio d'aquestes dues. [3]

Descripcio [ modifica ]

Els detalls coberts per un ABI inclouen els seguents:

  • Conjunt d'instruccions del processador, amb detalls com l'estructura del fitxer de registre, l'organitzacio de la pila, els tipus d'acces a la memoria, etc.
  • Mides, dissenys i alineacions dels tipus de dades basics als quals el processador pot accedir directament
  • Crida a convention , que controla com es passen els arguments de les funcions i es recuperen els valors; per exemple, controla el seguent:
    • Si tots els parametres es passen a la pila o si alguns es passen en registres
    • Quins registres s'utilitzen per a quins parametres de funcio
    • Si el primer parametre de funcio passat a la pila s'envia primer o darrer
    • Si la persona que truca o el destinatari es responsable de netejar la pila despres de la crida de funcio
  • Com hauria de fer una aplicacio crides al sistema al sistema operatiu, i si l'ABI especifica crides directes al sistema en lloc de crides de procediment als talons de crides del sistema, els numeros de crida del sistema
  • En el cas d'un sistema operatiu complet ABI, el format binari dels fitxers objecte , biblioteques de programes, etc. [4]

ABI complets [ modifica ]

Un ABI complet, com l' Intel Binary Compatibility Standard (iBCS), permet que un programa d'un sistema operatiu que admeti aquest ABI s'executi sense modificacions en cap altre sistema, sempre que hi hagi biblioteques compartides necessaries i hi hagi requisits previs similars. complert.

Els ABI tambe poden estandarditzar detalls com ara la manipulacio de noms C++ , la propagacio d'excepcions , i la convencio de crida entre compiladors de la mateixa plataforma, pero no requereixen compatibilitat multiplataforma.

Referencies [ modifica ]