Vés al contingut

Interfície binària d'aplicació

De la Viquipèdia, l'enciclopèdia lliure
Una comparació d'alt nivell de les API i ABI del nucli i del nucli a l'espai d'usuari.

En programari informàtic, una interfície binària d'aplicació (ABI) és una interfície entre dos mòduls de programa binari. Sovint, un d'aquests mòduls és una biblioteca o instal·lació del sistema operatiu, i l'altre és un programa que està executant un usuari.[1]

Un ABI defineix com s'accedeix a les estructures de dades o rutines computacionals en codi màquina, que és un format de baix nivell que depèn del maquinari. En canvi, una interfície de programació d'aplicacions (API) defineix aquest accés al codi font, que és un format relativament alt, independent del maquinari, sovint llegible per l'home. Un aspecte comú d'un ABI és la convenció de crida, que determina com es proporcionen les dades com a entrada o com a sortida de les rutines computacionals. Exemples d'això són 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 programació, 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. Després de la compilació, els binaris ofereixen un ABI. Mantenir aquest ABI estable durant molt de temps és important per als ISV.

Un ABI és tan important com l'arquitectura de maquinari subjacent. El programa fallarà igualment si infringeix qualsevol restricció d'aquestes dues.[3]

Descripció

[modifica]

Els detalls coberts per un ABI inclouen els següents:

  • Conjunt d'instruccions del processador, amb detalls com l'estructura del fitxer de registre, l'organització de la pila, els tipus d'accés a la memòria, etc.
  • Mides, dissenys i alineacions dels tipus de dades bàsics 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 següent:
    • Si tots els paràmetres es passen a la pila o si alguns es passen en registres
    • Quins registres s'utilitzen per a quins paràmetres de funció
    • Si el primer paràmetre de funció passat a la pila s'envia primer o darrer
    • Si la persona que truca o el destinatari és responsable de netejar la pila després de la crida de funció
  • Com hauria de fer una aplicació 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 números 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 necessàries i hi hagi requisits previs similars. complert.

Els ABI també poden estandarditzar detalls com ara la manipulació de noms C++, la propagació d'excepcions, i la convenció de crida entre compiladors de la mateixa plataforma, però no requereixen compatibilitat multiplataforma.

Referències

[modifica]
  1. «System V Application Binary Interface» (en anglès). [Consulta: 2 setembre 2023].
  2. Understanding the Application Binary Interface (en anglès). New York, NY: Springer, 1991, p. 373–378. DOI 10.1007/978-1-4612-3192-9_25. ISBN 978-1-4612-3192-9. 
  3. «Application Binary Interface - an overview | ScienceDirect Topics» (en anglès). https://www.sciencedirect.com.+[Consulta: 1r setembre 2023].
  4. «Application Binary Interface - The Rust Reference» (en anglès). https://doc.rust-lang.org.+[Consulta: 1r setembre 2023].