Quels sont les buts de L'ARM ABI et de L'EABI?

plus je regarde ce PDF moins je comprends ce que cela signifie. J'aimerais aussi avoir des commentaires sur les autres!--3-->1 et 2.

30
demandé sur Hi I'm Frogatto 2011-11-09 07:59:54

2 réponses

An ABI ( Interface Binaire D'Application) est une norme qui définit une correspondance entre les concepts de bas niveau dans les langages de haut niveau et les capacités du code machine d'une plate-forme matérielle/OS spécifique. Qui inclut des choses comme:

  • comment C / C++ / Fortran/... types de données sont disposés en mémoire (tailles des données / alignements)
  • comment imbriquée les appels de fonction travail (où et comment les renseignements sur la façon de retourner à l'appelant d'une fonction est stocké, où dans les registres CPU et / ou dans les arguments de fonction de mémoire sont passés)
  • comment démarrage / initialisation du programme fonctionne (quel format de données possède un "exécutable", comment le code / les données sont chargés à partir de là, comment fonctionnent les DLLs ...)

Les réponses à ces questions sont:

  • spécifique à la langue (d'où vous avez un C ABI, C++ ABI, Fortran ABI, Pascal ABI,... même la spécification Java bytecode, bien que cibler un processeur" virtuel " au lieu de matériel réel, est un ABI),
  • spécifique au système d'exploitation (MS Windows et Linux sur le même matériel utilisent un ABI différent),
  • /matériel spécifique au PROCESSEUR (le bras et les Abi x86 sont différents).
  • l'évolution au fil du temps (assez long) (ABIs existants ont souvent été mis à jour / rev'ed de sorte que de nouvelles fonctionnalités CPU pourraient être utilisées, comme, par exemple, spécifier comment les registres SSE x86 doivent être utilisé par apps était bien sûr seulement possible une fois CPUs avait ces règlements, par conséquent, les Abi existants devaient être clarifiés).

sans une sorte de cette standardisation, le code (machine) créé par différents compilateurs ne pourrait pas utiliser le même genre de bibliothèques (comment sauriez-vous de quelle manière le code de bibliothèque s'attend à ce que les arguments de fonction ou les structures de données soient passés ?).

Chaque plate-forme (une combinaison de matériel spécifique, logiciel et code Système écrit dans des langages de programmation spécifiques / compilé avec des compilateurs spécifiques) définit un ensemble complet D'ABIs pour rendre les choses interopérables. La terminologie dans ce domaine n'est pas claire, parfois les gens parlent juste de "L'ABI", d'autres fois c'est appelé le "supplément de plate-forme", ou on mentionne le langage de programmation et dit par exemple "le C++ ABI". Gardez à l'esprit, il n'y a pas une telle chose.

les documents auxquels vous avez fait référence dans votre question sont: tous les exemples spécifiques de ceci (Abi spécifiques à la langue / au système d'exploitation / au matériel).

même sur une plateforme spécifique, il n'est pas nécessaire d'avoir un seul ABI (set) parce que différentes conventions de ce type pourraient avoir des avantages différents (et donc fournir de meilleures performances / code plus petit / meilleure utilisation de la mémoire / ... - selon le programme) et les concepteurs du système essaient généralement d'être flexibles / acceptables.

Sur Microsoft Windows 32bit, pour exemple, il y a une multitude D'ABIs (fastcall, stdcall, pascal, ...) pour la fonction appelant les parties de convention.

quoi qu'il en soit, une recherche générique de stackoverflow pour "ABI" (inclus les liens sous la barre latérale "lié") donne tellement de pistes pour la recherche de cette question que je ferme ma réponse à ce point.

60
répondu FrankH. 2011-11-09 10:07:28

ARM ABI doit être référé lorsqu'un port du noyau OS sur ARM est utilisé.

EABI est quand le processeur démarre pour charger une application sans noyau intermédiaire. (Quelque chose comme il y avait ROM-BASIC quand DOS est arrivé), I. E. le micrologiciel lui-même est l'application autonome, aucun moniteur spécifique à la carte ou quoi que ce soit.

le premier lien est à la sous-partie détaillée liée à la procédure-appels de L'ARM ABI. Comme le modèle des programmeurs avance avec chaque version de ARM CPU, tels sujets sont importants et couverts par ABI.

le second lien est sur la spécification de format binaire pour les fichiers objets générés par un compilateur appelé ELF qui est spécifié par une marque SCO d'un vendeur D'OS. SCO est peut-être une organisation de Santa Cruz qui fabrique ses propres saveurs D'Unix ainsi que Linux, mais cette histoire dévie de la question. Vous devriez être intéressé par ceci si vous avez l'intention de mettre en œuvre linker supportant ELF targeting ARM.

Sauf si vous êtes directement en ce qui concerne les détails de la mise en œuvre de la chaîne d'outils de construction pour ARM, EABI devrait être de peu d'importance, et à moins que vous ne preniez en compte les aspects spécifiques de cette chaîne D'outils, ARM ABI devrait également être de peu d'importance.

21
répondu Chawathe Vipul 2013-04-10 09:15:11