第1节 堆栈的实现
堆栈的实现
约定:
•专门将一个寄存器(R29)用于堆栈指针(SP)。
•执行PUSH操作时,指针上移(向较高地址方向移动)。
•SP指向第一个未使用的存储单元;低于SP的存储单元均已分配(受保护)。
•规则:可以在任何时间使用堆栈;创建以后,该存储空间就不能另作他用。
•在我们的程序及其数据之外保留一块存储器空间。
我们只是使用软件约定来实现我们的堆栈(许多体系结构采用硬件来实现)。

堆栈管理宏
PUSH(RX):将Reg[x]压入到堆栈中。Reg[SP] = Reg[SP] + 4;Mem[Reg[SP]-4] = Reg[x]
POP(RX):弹出栈顶的值,并且存放到Reg[x]中。Reg[x] = Mem[Reg[SP]-4]Reg[SP] = Reg[SP] -4;
ALLOCATE(k):保留k个字的堆栈空间。Reg[SP] = Reg[SP] + 4*k
DEALLOCATE(k):释放k个字的堆栈空间。Reg[SP] = Reg[SP] -4*k



