反汇编版+内存版栈结构

反汇编版+内存版栈结构_第1张图片

正常下:
EBP:为上一层函数栈底
EBP+4:进入call下一条执行指令地址,也可以叫做返回地址
EBP+8:从左往右看的话算是第一个参数 (如果这个函数是有参数的话)
EBP+0c:第二参数 (如果这个函数是有参数的话)
EBP+10:第三个参数 (如果这个函数是有参数的话)
EBP-XXX:一般为局部变量

执行函数的流程:
1.传入参数
2.保存函数下一条地址做返回地址
3.保存当前函数的栈底
4.申请空间CCCCCCCC
5.保存寄存器(防止等下当前函数开始实际运行,使用了寄存器,而打乱上一层寄存器原本数值)

6.开始该函数要实现的事情(前面铺垫都是为了这一步)

7.函数实现完成后,恢复寄存器,
8.释放申请空间
9.恢复原本栈底
10.把返回地址给EIP
11.内平栈或外平栈(由调用约定决定)

反汇编版+内存版栈结构_第2张图片

你可能感兴趣的:(反汇编版+内存版栈结构)