LOGBOOK

HELP

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.

Nested layers showing the ISA (instructions, registers, encoding, addressing modes) enclosed inside the ABI, which adds calling convention, stack layout, data alignment, and system calls.

* 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:

From Quiz: REVE1 / Overview of Computer Systems | Updated: Jul 14, 2026