Unit content
Application binary interfaces and platform compatibility
An application binary interface (ABI) is the contract that lets separately built binary components cooperate on a particular platform.
It can specify calling conventions, register usage, data layout, executable and library formats, symbol conventions and how programs enter operating-system services.
ISA is not enough
Two operating systems can run on processors with the same instruction set while expecting different executable formats, system-call interfaces and libraries. A binary built for one platform therefore need not run on the other.
source program
↓ compile for target
ISA + ABI + platform libraries
↓
runnable binary
Stable boundaries
An ABI lets a compiled application call a library that was built separately because both sides agree on machine-level details. Changing those details incompatibly can break binaries without changing their source code.
Platform compatibility therefore depends on more than the processor architecture: software and operating-system contracts are part of the executable environment.