为什么保存的帧指针存在于堆栈帧中?

Why is Saved Frame Pointer present in a stack frame?

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

Why does EBP needs to return to it's initial value?

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

当一个函数returns o 它可以服务于前一个函数的函数调用时,EBP 的值被恢复