Stack Pointers
|
When a piece of program code calls a subroutine, control
eventually returns from that subroutine to the caller.The
calling code expects the state of the machine to be fundamentally the same as
when the subroutine was invoked.Since
all instructions on a modern computer work with the same set of registers, some
of the register values need to be preserved before the subroutine starts
working, so they can be restored after it is finished.High-level
programming languages provide the ability to pass multiple parameters to
functions, oftentimes more parameters than the number of registers available.Locally
scoped variables available only to the subroutine are also commonly used in
higher-level languages.All of these
things can be implemented by using a stack, or last-in-first-out queue.
MIPS-architecture machines use the $sp register by
convention as the stack pointer, the last-used memory location where
elements on the stack have been recorded.When
a program is loaded on the processor, $sp is initially set to the highest
address in a block of memory reserved for the stack.
| |