An ABI defines how data structures or computational routines are accessed in machine code, which is a low-level, hardware-dependent format.
In contrast, an application programming interface (API) defines this access in source code, which is a relatively high-level, hardware-independent, often human-readable format.
A common aspect of an ABI is the calling convention, which determines how data is provided as input to, or read as output from, computational routines.
ABIs can also standardize details such as the C++ name mangling,[2] exception propagation,[3] and calling convention between compilers on the same platform, but do not require cross-platform compatibility.
An embedded-application binary interface (EABI) specifies standard conventions for file formats, data types, register usage, stack frame organization, and function parameter passing of an embedded software program, for use with an embedded operating system.