Programming Language Pragmatics: Michael L. Scott
Programming Language Pragmatics: Michael L. Scott
Control Abstraction
frame pointer
• In prolog, Callee
– allocates a frame by subtracting framesize from sp
– saves callee-saves registers used anywhere inside
callee
• In epilog, Callee
– puts return value into registers (memory if large)
– restores saved registers using sp as base
– adds to sp to deallocate frame
– does jra
Adapted from Scott, 2006 11
Calling Sequences (C on MIPS)
• After call, Caller
– moves return value from register to wherever
it's needed (if appropriate)
– restores caller-saves registers lazily over time,
as their values are needed