关于栈帧的背景知识
栈在地址空间中是向下生长,向下生长是指是从内存高地址到低地址的路径延伸,栈有栈顶和栈底,所以栈顶的地址要比栈底的地址低,对于x86体系的CPU而言,其中寄存器ebp可称为“帧指针”或“基底指针”,通常指向栈底,寄存器esp可称为“栈指针”,通常指向栈顶。
ebp在未受改变之前始终指向栈帧的开始,也就是栈底。所以ebp的用途是在C堆栈中寻址用的。esp是会随着数据的入栈和出栈移动的,也就是说,esp始终指向栈顶。
在CPU内部还存在一种寄存器——PC指针,它指向正在执行指令的下一条指令的地址。CPU工作时,通过调用的函数分别完成三个步骤取指令,分析指令,执行指令。PC指针又称程序计数器,指向正在执行指令的下一条指令。
call:1.保存当前执行指令的下一条指令的地址。2.跳转到目标函数。
return:当调用函数时,保留PC,