堆指针寄存器?

时间:2016-11-30 04:14:30

标签: assembly mips isa

许多ISA,例如MIPS,都有一个名为"堆栈指针的寄存器"指示堆栈的顶部。为什么不是"堆指针"寄存器?堆顶部是否存储在内存中?

1 个答案:

答案 0 :(得分:2)

  

为什么不是"堆指针"注册

没有"堆指针"注册,因为没有malloc CPU指令。

有一个"堆栈指针" register是因为存在直接操作堆栈的CPU指令,例如x86上的callpushpop。这些指令通常要求存在架构堆栈指针寄存器。

注意:AFAIK对MIPS没有这样的说明;你必须自己调整堆栈指针以推送/弹出值,然后调用"将返回地址保存在链接寄存器中。尽管如此,调用堆栈和局部变量的概念对于大多数语言来说都是如此重要,因为寄存器用于跟踪堆栈位置,因为它比内存访问快得多。

  

堆顶部是否存储在内存中?

malloc有很多不同的实现,但它们都只采用size参数,但malloc没有选项可以将状态保存在全局变量中。

相关问题