Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

caller-saved

A register a called function is free to overwrite; if the caller still needs the value, the caller must save it before the call.

Caller-saved (volatile, call-clobbered) registers may be changed by any call; on x86-64 Linux and macOS rax, rcx, rdx, rsi, rdi, r8-r11; on 64-bit Windows rax, rcx, rdx, r8-r11; on ARM64 x0-x17 (and x18 where the OS does not reserve it); on RISC-V ra, t0-t6, a0-a7.

Examples

  • On x86-64 System V, any call may change rax, rcx, rdx, rsi, rdi and r8 to r11.

Read the full section →