进程的线性地址空间

函数栈帧向低地址延伸。堆由低地址向高地址延伸。
函数调用时的栈帧

EBP以前的栈的基地址。
通过一个很长的局部变量,将返回地址给覆盖。
ESP 栈顶指针,随着数据入栈出栈发生变化。ESP减少代表分配栈空间,ESP增加,代表栈空间减少。
EBP 基地址指针,用于标示栈中一个相对稳定的位置,用于引用函数参数以及局部变量。
发生函数调用时的栈帧
计算机做如下操作
- 首先把指令寄存器EIP中的内容压入栈(硬件自动压栈),作为程序的返回地址
- 之后放入栈的是基址寄存器EBP,指向栈帧的底部(编译器做的)
- 复制当前ESP给EBP,作为新的基址寄存器。
- 局部变量