Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cuál es la diferencia entre una interfaz de programación de aplicaciones (API) y una interfaz binaria de aplicaciones (ABI)?

¿Cuál es la diferencia entre una interfaz de programación de aplicaciones (API) y una interfaz binaria de aplicaciones (ABI)?

Para que sea más fácil de entender para todos, usaré el lenguaje C más utilizado y la arquitectura X86 como ejemplo

API: los programadores usan funciones de biblioteca como la función printf() en C stdio.h al programar. . La API puede mejorar en gran medida la eficiencia del desarrollo de programas y acortar el código fuente. Puede llamar directamente a printf() en el archivo de biblioteca #includelt; stdio.hgt; No es necesario que escriba usted mismo el código de implementación específico de la función printf().

ABI: Es una regla o estándar que especifica tipos de datos, métodos de almacenamiento, funciones/métodos (parámetros, valores de retorno, direcciones de retorno, ubicaciones y formatos de almacenamiento de variables), etc., como los parámetros de Funciones X86 Almacenadas en registros DI, SI, DX, CX, el valor de retorno se almacena en AX, almacenamiento en formato little endian, etc. Su función es facilitar el trasplante de software desde diferentes sistemas en la misma plataforma.

Personalmente, creo que esta ABI se puede incluir en el alcance de la arquitectura del conjunto de instrucciones ISA (esto es solo para facilitar la comprensión de todos sobre este tema, la definición de ISA no incluye ABI ~). Porque la misma ISA tiene el mismo ABI.

Intentaré dar un ejemplo fácil de entender. ABI es un poco como "uno planta un árbol para que otro disfrute de la sombra" (el compilador escribe una función al comienzo del proceso de compilación y el desarrollador llama a esta función directamente). ABI es como un teorema dejado por sus predecesores (debes seguir este teorema, de lo contrario estarás en un gran problema).

~~~~~~~~~~~~~~~~~ Si tienes alguna pregunta, continúa preguntando

.