函数栈帧

栈帧: stack frame ,本质是一种栈,只是这种栈专门用于保存函数调用过程中的各种信息(参数、返回地址、本地变量等)。栈帧有栈顶和栈低之分,其中栈顶的地址最低,栈底的地址最高,SP(栈指针 )就是一直指向栈顶。

栈帧示意图

每次调用一个函数就会生成一个新的栈帧,在函数调用过程中,我们将调用函数的函数称为“调用者(caller)”,将被调用的函数称为“被调用者(callee)”。在这个过程中,
1)“调用者”需要知道在哪里获取“被调用者”返回的值;
2)“被调用者”需要知道传入的参数在哪里,
3)返回的地址在哪里。同时,我们需要保证在“被调用者”返回后,%ebp, %esp 等寄存器的值应该和调用前一致。因此,我们需要使用栈来保存这些数据。

文档更新时间: 2021-03-14 18:52   作者:周国强