为什么Saved Frame Pointer存在于堆栈帧中?

时间:2017-07-14 22:01:20

标签: cpu-registers machine-code stack-pointer

我读到SFP用于将EBP恢复到之前的值。为什么EBP需要恢复到它的初始值?

1 个答案:

答案 0 :(得分:0)

  

为什么EBP需要恢复它的初始值?

当进行函数调用时,编译器通常作为函数体的第一件事,将当前的EBP值推送到堆栈并将EBP(基指针/帧指针)设置为当前的ESP(堆栈指针) ,总是指向堆栈的顶部)。然后EBP用于访问函数的局部变量和参数。

当函数返回o时,EBP的值将被恢复,它可以为前一个函数的函数调用提供服务。