The more I look at this PDF (Application Binary Interface for the ARM Architecture: The Base Standard) the less I understand what it means. Also I'd like some comments on Procedure Call Standard for the ARM Architecture and ELF for the ARM Architecture.
Base Platform ABI for the Arm Architecture. This document describes the Base Platform Application Binary Interface for the Arm architecture. This is the base standard for the interface between executable files (including dynamic shared objects, DLLs, etc) and the systems that execute them.
Your healthcare provider might want you to have an ABI test if you are at risk for PAD. The ABI test can: Diagnose PAD and prevent its progression and complications. Identify people who have a high risk for coronary artery disease.
Answer: EABI stands for Embedded Application Binary Interface. The EABI defines the low-level interface between programs, program components, and the execution environment, including the operating system if one is present.
ABI compatibility (application binary interface compatibility), for our purposes, refers to the ability to link pre-built (binary) libraries with arbitrary versions of a compiler.
An ABI (Application Binary Interface) is a standard that defines a mapping between low-level concepts in high-level languages and the abilities of a specific hardware/OS platform's machine code. That includes things like:
The answers to these are:
Without some kind of this standardization, (machine) code created by different compilers couldn't use the same kind of libraries (how would you know in which way the library code expects function arguments or data structures to be passed ?).
Every platform (a combination of specific hardware, operating system software and code written in specific programming languages / compiled with specific compilers) defines a whole set of ABIs to make things interoperable. The terminology in this area isn't clear, sometimes people just talk about "the ABI", other times it's called the "platform supplement", or one mentions the programming language and says e.g. "the C++ ABI". Keep in mind, there is not one such thing.
The documents that you linked to in your question are all specific examples of this (language- / operating-system / hardware-specific ABIs).
Even on a specific platform, there's no necessity to have one and only one ABI (set) because different such conventions might have different advantages (and therefore provide better performance / smaller code / better memory usage / ... - depending on the program) and system designers usually try to be flexible / permissible.
On 32bit Microsoft Windows, for example, there's a multitude of ABIs (fastcall, stdcall, pascal, ...) for the function calling convention parts.
Anyway, a generic stackoverflow search for "ABI" (included the links under the "Related" sidebar) gives so many leads to researching this question that I close my answer at this point.
ARM ABI should be referred when an OS kernel port on ARM is used.
EABI is when the processor boots to load an application with no intermediate kernel. (Something like there used to be ROM-BASIC when DOS came about), i. e. the firmware itself is the free-standing application, no board-specific monitor or anything.
The first link is to detailed sub-part related to procedure-calls of the ARM ABI. As the programmers' model advances with each version of ARM CPU, such topics are important and covered by ABI.
The second link is about binary format specification for object files generated by compiler called ELF that's specified by an OS vendor brand SCO. Perhaps SCO is Santa Cruz Organization that makes its own flavors of Unix as well as Linux, however that story deviates from the question. You should be interested in this if you intend to implement linker supporting ELF targeting ARM.
Unless you are directly concerned with implementation details of build tool-chain for ARM, EABI should be of little concern, and unless you are accounting for OS specific aspects of such tool-chain ARM ABI should also be of little concern.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With