Application binary interface
A binary interface defines an interface between a machine-level program and the operating system, or between a program and a library, or even between different components of the program. A binary interface is also called the ABI ( application binary interface English ).
It defines how the code has to look at the level of machine language that uses such an interface. Examples include the reservation of a specific processor registers for certain purposes, the direction of the stack or the format of floating point numbers.
A binary interface differs from an application programming interface ( API ) (English application programming interface ) is that the programming interface defines an interface on the source code level. This allows the code to compile on different machines that support the programming interface. The binary interface, however, permitted to operate on all systems that provide a binary-compatible interface, without requiring a recompile would be necessary.
The binary interface is in addition to defining an architecture and a defined transition from the program dar. into the operating system, it regulates things like calling conventions, system call tables and the meaning of signal numbers and so on. It should be possible to run the same program in binary format to run on all systems that support the ABI.
An ABI is sometimes only for a programming language and a compiler type, as the rules, such as from a function definition is a symbolic name should be, are language dependent.
Changes to an ABI, all programs to which it applies, to be recompiled - so this happens very rarely. However, a more recent counter-example is the C ABI for the GNU C compiler, the first changed from version 2.95 to version 3.0; due to errors in this new ABI occurred on it soon in version 3.1 to further change, which in turn was replaced soon after by the ABI version 3.2 to the other compilers to be as compatible by Intel. Since it is hardly possible to smoothly adapt the system to a new ABI, sparked this rapid change from a lot of resentment. The last ABI change was done with version 3.4 ( released on April 18, 2004), which is also used in the current 4.x series of the GCC.
A binary interface for embedded systems is also called EABI ( Embedded Application Binary Interface).