Interfaz binaria de la aplicación
En software de computadora, una interfaz binaria de aplicación (ABI) es una interfaz entre dos módulos de programa binarios. A menudo, uno de estos módulos es una biblioteca o una instalación del sistema operativo, y el otro es un programa que está ejecutando un usuario.
Un ABI define cómo se accede a las estructuras de datos o rutinas computacionales en código de máquina, que es un formato de bajo nivel que depende del hardware. Por el contrario, una API define este acceso en el código fuente, que es un formato de nivel relativamente alto, independiente del hardware y, a menudo, legible por humanos. Un aspecto común de una ABI es la convención de llamada, que determina cómo se proporcionan los datos como entrada o se leen como salida de las rutinas computacionales. Ejemplos de esto son las convenciones de llamadas x86.
Adherirse a una ABI (que puede o no estar oficialmente estandarizada) suele ser el trabajo de un compilador, un sistema operativo o un autor de biblioteca. Sin embargo, un programador de aplicaciones puede tener que lidiar con una ABI directamente al escribir un programa en una combinación de lenguajes de programación, o incluso al compilar un programa escrito en el mismo lenguaje con diferentes compiladores.
Descripción
Los detalles cubiertos por una ABI incluyen lo siguiente:
- Conjunto de instrucciones de procesador, con detalles como estructura de archivos de registro, organización de pilas, tipos de acceso a la memoria, etc.
- Tamaños, diseños y alineaciones de tipos de datos básicos que el procesador puede acceder directamente
- Llamando convención, que controla cómo se aprueban los argumentos de las funciones, y recuperar los valores de retorno; por ejemplo, controla lo siguiente:
- Si todos los parámetros se pasan en la pila, o algunos se pasan en registros
- Que registros se utilizan para qué parámetros de función
- Si el primer parámetro de función pasó en la pila es empujado primero o último
- Cómo una aplicación debe hacer llamadas del sistema al sistema operativo, y si el ABI especifica llamadas directas del sistema en lugar de llamadas de procedimiento a los problemas de llamada del sistema, el sistema llama números
- En el caso de un sistema operativo completo ABI, el formato binario de archivos de objetos, bibliotecas de programas, etc.
ABI completa
Una ABI completa, como Intel Binary Compatibility Standard (iBCS), permite que un programa de un sistema operativo compatible con esa ABI se ejecute sin modificaciones en cualquier otro sistema, siempre que estén presentes las bibliotecas compartidas necesarias y se cumplan requisitos previos similares. cumplido.
Las ABI también pueden estandarizar detalles como la manipulación de nombres de C++, la propagación de excepciones y la convención de llamadas entre compiladores en la misma plataforma, pero no requieren compatibilidad entre plataformas.
ABIs integradas
(feminine)Una interfaz binaria de aplicación integrada (EABI) especifica convenciones estándar para formatos de archivo, tipos de datos, uso de registros, organización de marcos de pila y paso de parámetros de función de un programa de software integrado, para usar con un sistema operativo integrado.
Los compiladores que admiten EABI crean código objeto que es compatible con el código generado por otros compiladores similares, lo que permite a los desarrolladores vincular bibliotecas generadas con un compilador con código objeto generado con otro compilador. Los desarrolladores que escriben su propio código de lenguaje ensamblador también pueden interactuar con el ensamblado generado por un compilador compatible.
Los EABI están diseñados para optimizar el rendimiento dentro de los recursos limitados de un sistema integrado. Por lo tanto, los EABI omiten la mayoría de las abstracciones que se realizan entre el kernel y el código de usuario en los sistemas operativos complejos. Por ejemplo, se puede evitar la vinculación dinámica para permitir ejecutables más pequeños y una carga más rápida, el uso de registros fijos permite pilas más compactas y llamadas al kernel, y ejecutar la aplicación en modo privilegiado permite el acceso directo a la operación de hardware personalizada sin la indirección de llamar a un controlador de dispositivo. La elección de EABI puede afectar el rendimiento.
Los EABI ampliamente utilizados incluyen PowerPC, Arm EABI y MIPS EABI. Las implementaciones de software específicas, como la biblioteca C, pueden imponer limitaciones adicionales para formar ABI más concretas; un ejemplo es GNU OABI y EABI para ARM, los cuales son subconjuntos de ARM EABI.
Contenido relacionado
Ad Lib, Inc.
Cacao (API)
Bartolomeu de Gusmão