An application binary interface (ABI) is the set of binary-level rules that allows compiled software components to work together. It can specify how functions pass arguments and return values, how data is laid out, and how compiled programs use platform interfaces. An ABI is specific to its target architecture and system—not one universal standard.
What an ABI defines
An ABI is a contract between compiled components. The System V specification describes its purpose as defining “a system interface for compiled application programs.” It is a family of specifications: a generic portion is combined with a processor-specific supplement to describe a complete interface for a hardware architecture. System V ABI, generic specification
Depending on the platform, an ABI may specify how a caller and callee exchange values, how types are represented in memory, and how registers and the stack are used. Platform documents can also cover binary formats, exception handling, and unwinding—the rules needed to restore execution state as a program exits a function or handles an exception.
ABI versus API
An API is generally the source-level interface a programmer uses: the functions, types, and operations exposed by a library or platform. An ABI is the binary-level agreement that compiled code relies on when components communicate. The two are related, but they are not interchangeable. .NET Blog: Conversation about .NET interop
Code can be written against the same API yet encounter an ABI mismatch if a compiled library and its caller expect different conventions for calls or data representation. Sharing an API does not, by itself, guarantee binary compatibility.
A calling convention is only one part
A calling convention describes how a function call is made—for example, where arguments and return values go and which registers a function must preserve. It is an important part of an ABI, but not the whole contract. Type layout, stack rules, and other platform conventions can matter just as much at a boundary between compiled components.
Microsoft’s x64 documentation illustrates the broader scope: it addresses calling conventions as well as type and storage layout, register and stack use, exception handling, and related conventions. Microsoft Learn: x64 ABI conventions
Why ABI compatibility matters
Separately compiled parts of a program—such as an application and a library—must make compatible assumptions when they exchange calls and data. If those assumptions differ, a function boundary can behave incorrectly even when the source code expresses the same intent. ABI compatibility is therefore relevant to compiled libraries, language interoperability, and targeting a particular platform.
Free tools Windows power users keep installed
One-click scans. No signup required.
ABI examples depend on the target
System V
System V is a family, not a single all-purpose ABI. Its generic rules are meant to be used with the applicable processor supplement, so the architecture matters when identifying the complete interface. System V ABI, generic specification
Microsoft x64
Microsoft’s x64 documentation describes a default fast-call convention that uses four registers for arguments, along with rules for shadow space, parameter passing and returns, preserved registers, stack alignment, and unwindability. These details apply to Microsoft’s documented x64 environment; “x64 ABI” alone is not precise enough to identify the operating-system and platform conventions. Microsoft Learn: x64 calling convention
Rank #4
RISC-V
The RISC-V ABI specifications are organized into calling-convention, ELF, and DWARF portions. That organization shows why ABI documentation can address executable-file formats and debugging or unwind information in addition to function calls. RISC-V International: Introduction to the ratified specifications
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How to compare two ABIs
When compatibility or interoperability is the question, identify the exact target and compare the rules that affect the boundary:
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problems- Target: architecture and operating system, plus the relevant ABI specification or revision.
- Calls and returns: how arguments and return values are passed.
- Data layout: type sizes, alignment, and memory representation.
- Machine state: register-preservation requirements and stack use or alignment.
- Other binary rules: executable format, exception handling, and unwind conventions when relevant.
The exact requirements depend on the architecture, operating system, compiler or toolchain, and ABI revision. For implementation work, consult documentation for that precise combination rather than assuming that a broad label such as “64-bit” determines compatibility.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




