1. 堆栈相关的寄存器
- esp, 堆栈指针(stack pointer)
- ebp, 基址指针(base pointer)
2. 堆栈操作
- push,栈顶地址减少4个字节(32位)
- pop, 栈顶地址增加4个字节(32位)
3. ebp在C语言中用作记录当前函数调用基址
- cs:eip,总是指向下一条的指令地址
- 顺序执行,总是指向地址连续的下一条指令
- 跳转/分支,执行这样的指令的时候,cs:eip的值会根据程序需要被修改
- call,将当前cs:eip的值压入栈顶,cs:eip指向被调用函数的入口地址
- ret,从栈顶弹出原来保存在这里的cs:eip的值,放入cs:eip中
4. 调用函数框架
学习视频链接:10_02_深入理解函数调用堆栈