Interface aspects covered by an ABI include: •
Processor instruction set, with details like register file structure,
memory access types, etc. • Size, layout, and
alignment of basic
data types that the processor can directly access •
Calling convention, which controls how the arguments of
functions are passed, and return values retrieved; for example, it controls the following: • How the
call stack is organized • Whether all parameters are passed on the call stack, or some are passed in registers • Which registers are used for which function parameters • Whether the first function parameter passed on the call stack is pushed first or last • Whether the caller or callee is responsible for cleaning up the call stack after the function call •
Name mangling •
Exception propagation • How an application should make
system calls to the operating system, and if the ABI specifies direct system calls rather than procedure calls to system call
stubs, the system call numbers • In the case of a complete operating system ABI, the binary format of
object files, program libraries, etc. ABIs include the
Intel Binary Compatibility Standard (iBCS) and the
System V Release 4 ABIs for various instruction sets. == Embedded ABI ==