An ABI is the binary contract that lets compilers, libraries, runtimes, and operating systems work together. It defines calling conventions, register use, stack layout, data representation, symbols, linking, loading, and system calls. C remains the preferred ABI language because its simple, explicit model enables stable, portable interfaces across compilers and programming languages.
Low Level
6 min read
Read article →
GAS is a powerful assembler because it supports many CPU architectures through GNU Binutils, including x86, ARM, RISC-V, MIPS, and PowerPC. On x86, it supports both Intel and AT&T syntax. GAS works closely with GCC, Clang, GDB, `ld`, `objdump`, and `readelf`, making it ideal for systems programming, compilers, operating systems, cross-compilation, and low-level development.
Assemblers
2 min read
Read article →
Why an instruction set, assembler toolchain, and operating-system ABI must be understood together when writing low-level software.
Low Level
12 min read
Read article →
A practical decision framework based on target architecture, operating system, syntax, object format, and surrounding toolchain.
Assemblers
18 min read
Read article →
A compact introduction to the object and executable formats most relevant to Windows, Linux, and macOS low-level development.
Binaries
7 min read
Read article →