En
software de ordenador
, una
interfaz binaria de aplicacion
(
ABI
) es la
interfaz
entre dos modulos de programa, uno de los cuales es, a menudo, una
libreria
o
sistema operativo
, a nivel de
lenguaje de maquina
. Una ABI determina detalles como la forma de llamar a las funciones, en que formato binario se deberia pasar la informacion de un componente de programa al siguiente, o al sistema operativo en el caso de una
llamada al sistema
.
La adhesion a las ABIs (las cuales pueden o no estar oficialmente estandarizadas) es normalmente trabajo del
compilador
, sistema operativo o de la libreria, pero los programadores de aplicaciones pueden tratar con las ABIs directamente cuando escriben las aplicaciones en una mezcla de lenguajes de programacion, utilizando
interfaces de funciones foraneas
entre ellas.
Las ABIs difieren de las
interfaces de programacion de aplicaciones
(API) en que ambas definen interfaces entre componentes de programa pero las API a nivel de
codigo fuente
.
Descripcion
[
editar
]
Las ABIs cubren aspectos como:
- tamanos, disposicion y
alineamiento
de los
tipos de datos
- la convencion de llamada, que controla como se pasan los argumentos de las
funciones
y se recuperan los valores devueltos; por ejemplo, si todos los parametros se pasan a la pila o si algunos parametros pasan a los registros, que registros se utilizan para que parametros de una funcion, y que parametro pasa primero a la pila, si pasa el primero o el ultimo
- como una aplicacion deberia realizar
llamadas al sistema
del sistema operativo y, si la ABI especifica llamadas directas al sistema en vez de llamadas de procedimiento, las direcciones de llamada
- y en el caso de un ABI de sistema operativo completo, el formato binario de los
archivos objeto
de las librerias de programa, etc.
Un ABI completo, como el
Estandar de Compatibilidad Binaria de Intel
(iBCS),
[
1
]
permite a un programa de un sistema operativo soportar dicho ABI para ejecutarse sin modificaciones en cualquier otro sistema al que se le provean de las librerias compartidas necesarias y tenga los mismos prerrequisitos.
Otras ABIs estandarizan detalles como la convencion de nombres de funciones en C++,
[
2
]
manejo de excepciones
, propagacion,
[
3
]
y convencion sobre llamadas entre compiladores de la misma plataforma que no requieren compatibilidad con otras plataformas.
Una
interfaz binaria de aplicacion embebida
(EABI) especifica convenciones estandarizadas para los
formatos de archivo
, tipos de datos, uso de registros, organizacion de la pila y paso de parametros en funciones de una aplicacion de un
sistema embebido
.
Los
compiladores
que soportan EABI crean
codigo objeto
compatible con el codigo generado por otros compiladores, permitiendo a los desarrolladores enlazar librerias generadas con otros compiladores. Los desarrolladores que escriben su propio codigo en
lenguaje ensamblador
pueden usar EABI para interactuar con el ensamblador generado por otro compilador.
Las diferencias principales entre EABI y ABI para sistemas operativos de proposito general son que se permiten instrucciones privilegiadas en el codigo de la aplicacion sin necesidad de enlazado dinamico y se utiliza un marco de pila mas compacto para ahorrar memoria.
[
4
]
La eleccion de EABi puede afectar al rendimiento.
[
5
]
[
6
]
Ejemplos de EABIs ampliamente utilizadas:
PowerPC
,
[
7
]
ARM
EABI2
[
8
]
y
MIPS
EABI.
[
9
]
Vease tambien
[
editar
]
Referencias
[
editar
]
Enlaces externos
[
editar
]