System V AMD64 ABI
Every C/C++/Rust/Go/Swift program on x86-64 Linux follows this ABI. Understanding it is essential for FFI bindings, inline assembly, debugger step-over logic, and compiler backend development.
What It Defines
Defines the calling conventions, register allocation, stack frame layout, parameter/return value passing, and ELF object file conventions for x86-64 code on Unix/Linux systems. Specifies which registers are caller-saved vs callee-saved (rax, rdi, rsi, rdx, rcx, r8, r9 for integer args), how system calls are made via the syscall instruction, and how dynamic linker PLT/GOT tables work for shared libraries.
Canonical (Normative)
Convenient (Practical)
Non-profit hosting Linux kernel development and hundreds of open-source projects. Maintains the Linux Standard Base (LSB) for binary-compatible Linux distributions, hosts the ELF reference specifications and System V ABI documents, and stewards ELISA, OpenEmbedded, Zephyr, and other embedded/safety-critical Linux initiatives.
Related Specs
x86-64 dominates server (cloud compute), desktop, and laptop computing. Understanding the SDM is required for OS development, JIT compilation, security research, and any performance-critical native code.
Every compiled binary on Linux is ELF. Understanding ELF is essential for debugging, reverse engineering, dynamic linking, build toolchains, binary patching, and tools like readelf, objdump, ldd, and patchelf.
POSIX defines the lingua franca of Unix/Linux systems programming. Every system call pattern, signal handler, file descriptor idiom, and shell script convention in the Linux/macOS world comes from this spec.