FREE LESSON · Machine code & execution · 2 OF 4
Calling Conventions and Stack Frames
Calls are negotiated protocols — Calling conventions and stack frames
Separate compilation works because callers and callees agree.
A calling convention assigns argument and return locations, classifies caller- and callee-saved registers, defines stack alignment, and specifies how control returns. A stack frame may hold saved state, local storage, spilled registers, and metadata. The compiler may omit or reshape it when the observable contract still holds.
The call instruction transfers control; the convention makes that transfer interoperable.
A return address is powerful data
A call records where execution should resume, often in a register or on the stack. Corrupting it can redirect control, which is why stack bounds, non-executable memory, address randomization, control-flow protections, and memory-safe languages matter. A software convention becomes a security boundary when data controls execution.
Inspect which data can influence the next instruction; that is the heart of control-flow integrity.