Registers, flags & the stack
Keep live values close, and spill them when physical space runs out.
A variable in your source does not own a permanent hardware register.
A software-visible name.
Follow an instruction
Overlap improves throughput. Dependencies introduce bubbles unless the implementation can forward or do independent work.
What this model includes
Five-stage, single-issue teaching model. Dependent mode inserts two idle issue cycles per instruction; real forwarding and hazards vary.
What happens inside
Track live values
Architectural registers are named by the ISA. Physical registers are implementation storage used by renaming. The compiler allocates architectural registers to live values and may reuse one when a value dies. Too many simultaneously live values create spills: loads and stores to a stack slot.
Respect the call boundary
An ABI divides registers into caller-saved and callee-saved classes and defines argument passing and stack alignment. A call frame may store return state, saved registers, and locals, but optimized code may omit a frame pointer. Status flags hold arithmetic conditions on ISAs that define them.
What this means for your code
Low-level engineer
Check calling conventions before mixing languages or assembly. Preserve required registers and stack alignment; an ABI violation can appear far from its cause.
Software developer
Inlining and loop unrolling can increase register pressure. Avoid assuming every local variable creates a memory allocation.
Read the actual specifications
These references supply the underlying contracts and implementation details. The diagrams here are simplified teaching models.