Quiz Entry - updated: 2026.07.14
What is the difference between ABI and ISA?
The ISA is the set of instructions a CPU understands; the ABI is the broader binary contract — the ISA plus calling conventions, stack layout, and data alignment.
* The ISA is the inner hardware contract that the ABI wraps with calling convention, stack layout, alignment, and system-call rules. *
| Aspect | ISA | ABI |
|---|---|---|
| Scope | Instructions only | Complete binary interface |
| Defines | add, mov, jmp operations |
How to call functions, pass arguments |
| Example | x86-64, ARM64, RISC-V | Linux x86-64 ABI, Windows x64 ABI |
What ISA specifies:
- Available instructions (add, subtract, load, store, jump...)
- Registers and their purposes
- Instruction encoding (binary format)
- Memory addressing modes
What ABI adds on top:
- Calling convention: Which registers hold function arguments? (rdi, rsi, rdx... on Linux x86-64)
- Stack layout: How is the stack organized? Which way does it grow?
- Data alignment: How are structs laid out in memory?
- System calls: How do you ask the OS to do something?
Why this matters:
- Same ISA (x86-64), different ABIs → Linux binaries won't run on Windows!
- Compilers must know the ABI to generate compatible code
- Reverse engineers need to know the ABI to understand function calls
Example: sum += A[1 + i] might compile to add 4(%rdi, %rsi, 2), %rax - the ABI determined that A is in rdi and i is in rsi.
Go deeper:
Application binary interface (Wikipedia) — the ABI layer (calling conventions, register/stack use, object formats) that sits above the raw ISA.
Instruction set architecture (Wikipedia) — what the hardware instruction set defines, versus what the ABI adds on top.
x86 calling conventions (Wikipedia) — how real x86/x86-64 conventions pass args, return values and clean the stack.