self-taught
ABI stands for Application Binary Interface.
An ABI defines the low-level interface between compiled code and the system or other compiled code.
While an API (Application Programming Interface) tells you how to call a function in source code, the ABI tells you how the compiled machine code should interact.
What an ABI specifies
- Calling conventions
- how arguments are passed between functions
- who cleans up the stack
- return value location
- data layout/alignment
- size of primitive types
- how types are aligned in memory
- name mangling
- how function names appear in object files (especially in C++).
- system-level conventions
- how system calls are made
- which registers are preserved across calls
- binary format expectations
Examples
- Linux uses the System V Binary Application Interface, like most Unix-like systems.