Une interface binaire d'application (ABI) est l'interface entre deux modules de programme binaire qui fonctionnent ensemble. Un ABI est un contrat entre des morceaux de code binaire définissant les mécanismes par lesquels les fonctions sont appelées et comment les paramètres sont passés entre l'appelant et l'appelé. Les ABI sont devenues essentielles dans le développement d'applications tirant parti contrats intelligents, Sur Blockchain protocoles comme Ethereum.
Aspect
Explication
Définition
Une interface binaire d'application (ABI) est un ensemble de règles et de conventions qui dictent la manière dont le code binaire ou le code machine communique et interagit avec d'autres codes binaires, en particulier dans le contexte de bibliothèques logicielles, de systèmes d'exploitation ou de matériel. L'ABI définit les structures de données, les conventions d'appel, l'utilisation des registres et d'autres détails de bas niveau qui garantissent la compatibilité et l'interopérabilité entre les différents composants logiciels. Il agit comme une interface entre les langages de programmation de haut niveau et le code machine, permettant aux programmes écrits dans différents langages de fonctionner ensemble de manière transparente. Les ABI sont cruciaux pour la compatibilité binaire et le bon fonctionnement des systèmes logiciels.
Concepts clés
- Compatibilité binaire: Les ABI garantissent que le code binaire compilé peut interagir avec d'autres codes binaires sans conflits ni erreurs. – Conventions d'appel: Les ABI spécifient comment les fonctions ou les procédures sont appelées et comment les paramètres sont transmis entre les fonctions. – Disposition des données: Ils définissent la manière dont les structures de données sont représentées en mémoire, y compris l'alignement, le remplissage et l'ordre des octets. – Enregistrer l'utilisation: Les ABI dictent la manière dont les registres sont utilisés pour les arguments de fonction et les valeurs de retour. – Gestion des exceptions: Certains ABI définissent la manière dont les exceptions et les erreurs sont gérées.
Caractéristiques
- Standardisation: Les ABI sont standardisés pour garantir la compatibilité entre différentes plates-formes et compilateurs. – Niveau faible: Les ABI traitent des détails de bas niveau du code binaire, ce qui les rend essentiels à l'interopérabilité. – Spécifique au compilateur: Bien que les ABI suivent les normes, ils peuvent toujours être spécifiques au compilateur, ce qui entraîne des variations entre les différents compilateurs. – Interopérabilité binaire: Les ABI permettent à différents modules binaires de fonctionner ensemble quel que soit le langage de programmation de haut niveau utilisé pour les créer.
Implications
- Interopérabilité: Les ABI permettent à des composants logiciels écrits dans différents langages de communiquer et de fonctionner ensemble. – Compatibilité: Les ABI garantissent que le code binaire reste compatible même lorsque des modifications sont apportées au code source ou au compilateur. – Portabilité: Les applications compilées pour une plateforme peuvent être utilisées sur une autre plateforme si les ABI correspondent. – Entretien: Le maintien d'un ABI stable est crucial pour la compatibilité ascendante et le succès des bibliothèques de logiciels.
Avantages
- Interopérabilité: Les ABI permettent à des logiciels écrits dans différents langages de fonctionner ensemble de manière transparente. – Portabilité: Les logiciels compilés avec un ABI particulier peuvent être exécutés sur différentes plates-formes avec des ABI compatibles. – Efficacité: Les ABI sont conçus pour optimiser l'interaction entre les composants logiciels au niveau binaire. – Compatibilité: Les modifications apportées au code source ou aux compilateurs ne rompent pas nécessairement la compatibilité binaire si l'ABI reste stable.
Inconvénients
- Complexité: Les ABI peuvent être complexes, en particulier dans des environnements hétérogènes avec plusieurs langages de programmation. – Dépendances du compilateur: Les ABI peuvent être influencés par le choix du compilateur, entraînant des variations. – Entretien: Assurer la compatibilité ascendante avec les ABI précédents peut s'avérer difficile lors des mises à jour ou des modifications. – Rigidité: Les modifications apportées à l'ABI peuvent être limitées en raison de problèmes de compatibilité.
Applications
Les ABI sont essentiels dans une large gamme de systèmes logiciels et matériels, notamment les systèmes d'exploitation, les bibliothèques de logiciels, les pilotes de périphériques et les micrologiciels. Ils sont particulièrement cruciaux dans le développement d’interfaces de programmation d’applications (API), de programmation au niveau système et de développement multilingue.
Cas d'usage
- Systèmes d'exploitation: Les ABI définissent la manière dont les applications au niveau utilisateur interagissent avec le noyau du système d'exploitation. – Bibliothèques de logiciels: Les ABI garantissent que les bibliothèques de logiciels peuvent être utilisées par des applications écrites dans différents langages de programmation. – Pilotes de périphérique: Les ABI sont essentiels pour les pilotes de périphériques qui communiquent avec les composants matériels. – Développement multilingue: Les ABI permettent le développement de logiciels combinant plusieurs langages de programmation, comme l'utilisation d'une bibliothèque C à partir d'un programme Python. – Systèmes embarqués: Les ABI jouent un rôle dans le développement de systèmes embarqués, où une communication efficace avec le matériel est cruciale.
Pour comprendre une interface binaire d'application, il peut être utile de définir d'abord l'interface de programmation d'application (API).
Considérez une API comme un contrat entre des morceaux de code source. Ce contrat définit le retour Plus-value et les paramètres d'une fonction et dicte si l'héritage est autorisé. Une API est appliquée par un compilateur ou un programme convertissant des instructions dans un format qui peut être lu et exécuté par un ordinateur. En d'autres termes, le L'API contient des instructions sur ce que le code source peut et ne peut pas faire dans le cadre d'un plateforme système opérateur.
Un ABI, en revanche, est un contrat entre des morceaux de code binaire. Une interface binaire d'application définit les mécanismes par lesquels les fonctions sont appelées et comment les paramètres sont passés entre l'appelant et l'appelé. L'ABI régit également la manière dont les programmes sont chargés en mémoire et la manière dont les bibliothèques sont implémentées. En effet, l'ABI est appliquée par l'éditeur de liens - défini comme un programme utilisé avec un compilateur pour fournir des liens vers les bibliothèques nécessaires à un programme exécutable.
Cela signifie que l'ABI contient des règles sur la manière dont le code non lié doit fonctionner ensemble et sur la manière dont les processus doivent coexister sur le même système. Alors que l'API répertorie les fonctions qui peuvent être appelées, l'ABI dicte comment chaque fonction peut être appelée. Les ABI sont généralement établies entre les programmes utilisateur et les bibliothèques, mais également dans les services du système d'exploitation et les langages de programmation.
Fonctions de l'interface binaire de l'application
Les ABI couvrent une variété de fonctions, notamment :
Jeux d'instructions du processeur indiquant des détails tels que les types d'accès à la mémoire et le fichier de registre structure.
Comment une application effectue des appels système vers le système d'exploitation et si des appels système directs ou des appels de procédure sont utilisés pour les talons d'appel système.
Disposition, taille et alignement des types de données de base.
Convention d'appel, qui dicte comment les arguments des fonctions sont passés et les valeurs de retour récupérées. La convention d'appel contrôle quels paramètres sont passés sur la pile et lesquels sont passés dans les registres. Il affecte également des registres aux paramètres de fonction et détermine si le premier paramètre de fonction transmis sur la pile est poussé en premier ou en dernier.
ABI complets et intégrés
Compléter les ABI
Une ABI complète permet à un programme du système d'exploitation qui le prend en charge de s'exécuter sans modifications sur n'importe quel système similaire. C'est à condition que des bibliothèques partagées existent et que des prérequis similaires soient satisfaits.
Par exemple, la norme de compatibilité binaire Intel (iBCS) est l'ABI standardisée pour les systèmes d'exploitation Unix sur les ordinateurs compatibles Intel.
ABI intégrés
Les ABI intégrés (EABI) spécifient les conventions d'utilisation des registres, les types de données, le cadre de pile organisationet des formats de fichiers à utiliser dans un système d'exploitation intégré.
Le code objet créé par les compilateurs pour prendre en charge l'EABI est compatible avec le code généré par d'autres compilateurs. Cela permet aux développeurs de lier la bibliothèque générée avec un compilateur à la bibliothèque générée par un autre en utilisant du code objet.
En fin de compte, les ABI embarquées sont conçues pour performant optimisation. Fonctionnant dans les limites d'un système embarqué, l'ABI supprime la majorité des abstractions faites entre le noyau et le code utilisateur dans les systèmes d'exploitation complexes.
PowerPC - créé dans le cadre d'une alliance entre Apple, IBM et Motorola - est un exemple d'EABI largement utilisé.
Principales sorties:
Une interface binaire d'application est l'interface entre deux programmes de module de programme binaire leur permettant de travailler ensemble.
Alors qu'une interface de programmation d'application (API) est un contrat entre deux morceaux de code source, une ABI est un contrat entre deux sources de code binaire. L'ABI dicte également comment les fonctions peuvent être appelées à partir de l'API.
Les interfaces binaires d'application sont présentes dans plusieurs scénarios. Ils influencent les jeux d'instructions du processeur et déterminent comment une application effectue des appels système vers le système d'exploitation. Un ABI dicte également la disposition, la taille et l'alignement des types de données de base.
Gennaro est le créateur de FourWeekMBA, qui a atteint environ quatre millions d'hommes d'affaires, comprenant des cadres de niveau C, des investisseurs, des analystes, des chefs de produit et des entrepreneurs numériques en herbe rien qu'en 2022 | Il est également directeur des ventes pour une mise à l'échelle de haute technologie dans l'industrie de l'IA | En 2012, Gennaro a obtenu un MBA international avec un accent sur la finance d'entreprise et la stratégie commerciale.
Découvrez plus de FourWeekMBA
Abonnez-vous maintenant pour continuer à lire et accéder aux archives complètes.