【发布时间】:2016-05-29 13:32:15
【问题描述】:
在调用堆栈上,我们有一个帧指针,它为我们提供了过程参数的位置以及指向前一帧的指针的地址。我们也有一个退货地址。为什么它需要返回地址?难道我们不能仅仅跟随帧指针返回堆栈,同时弹出堆栈帧吗?退货地址只是优化吗?
【问题讨论】:
-
返回地址包含要返回的指令的地址。它不会以其他方式存储在其他任何地方。
-
帧指针一般是前面的栈指针。返回地址为前一条指令指针。
-
帧是可选的,帧指针是可选的,返回地址不是可选的。还在处理器内部进行了大量优化,以改进分支预测。