La interfaz de aplicación binaria (binary) ( en inglés application binary interface , ABI ) es un conjunto de acuerdos para el acceso de aplicaciones al sistema operativo y otros servicios de bajo nivel, diseñado para la portabilidad de código ejecutable entre máquinas que tienen ABI compatibles [ 1 ] . A diferencia de la API , que regula la compatibilidad en el nivel del código fuente [2] , la ABI puede considerarse como un conjunto de reglas que permiten al enlazador combinar módulos de componentes compilados sin volver a compilar el código completo, al mismo tiempo que define una interfaz binaria [3 ] .
La interfaz binaria de la aplicación regula [2] [3] :
La interfaz binaria de la aplicación describe la funcionalidad proporcionada por el núcleo del sistema operativo y la arquitectura del conjunto de instrucciones (sin comandos privilegiados) [5] . Si la interfaz de programación de aplicaciones de diferentes plataformas es la misma, el código para estas plataformas se puede compilar sin cambios. Siempre que tanto la API como la ABI sean las mismas para diferentes plataformas, los archivos binarios se pueden transferir a esas plataformas sin modificaciones. Si las API o ABI de las plataformas difieren, es necesario cambiar y volver a compilar el código. La API no proporciona compatibilidad de tiempo de ejecución ; esta es la tarea de la interfaz binaria.
Interfaz binaria de aplicaciones integradas ( eng. Interfaz binaria de aplicaciones integradas, EABI ) es un conjunto de convenciones para su uso en software integrado que describe [6] :
Si un archivo de objeto fue generado por un compilador compatible con EABI , es posible que ese archivo de objeto sea vinculado por cualquier enlazador que admita el mismo EABI.
La principal diferencia entre EABI y ABI en un sistema operativo de propósito general es que se permiten comandos privilegiados en el código de la aplicación y no se requiere vinculación dinámica ( vinculación ) (y, a veces, está completamente prohibido), y también, para ahorrar memoria, un más se utiliza la organización de pila compacta.