Demystifying the Red Zone: Optimizing Leaf Functions
5 hours ago
- #System V ABI
- #Red Zone
- #Assembly
- The Red Zone is a 128-byte safe area below the stack pointer in x86-64 and ARM64 Mac systems, defined by the System V ABI.
- It allows leaf functions to skip stack pointer adjustments, optimizing performance by reducing instruction count.
- Kernel asynchronous writes, such as signal frames, avoid the Red Zone, ensuring data within 128 bytes of rsp remains untouched.
- An example proof-of-work function demonstrates the optimization, saving 6% of instructions by avoiding stack bookkeeping.
- Windows omits the Red Zone, using a 32-byte shadow space for register argument spilling instead.
- Assembly code validates the Red Zone's protection by showing memory within it survives signal handling, while outside data is clobbered.