我目前正在阅读John L. Henessy的建筑课程计算机组织与设计。据我所知,$ sp指向堆栈中最近分配的地址,$ fp指向堆栈的开头。为什么我们需要$ fp?如果一个过程调用另一个过程,它们如何表现?例如,当堆栈增长时,堆栈指针会递减,但$ fp中的更改是什么?
答案 0 :(得分:1)
$fp
在调用当前函数之前包含$sp
的值,即当前堆栈帧的开头(wikipedia)。 $fp
对于常用PUSH
和POP
的x86计算机非常有用,对MIPS不太有用,其中$sp
通常在进入函数时调整一次{\ n}} {1}}可以使用相对寻址。