堆栈
堆栈就是一块内存,操作系统在程序启动的时候已经分配好的,供程序执行时使用的内存。
(与数据结构中的堆栈无关)
注:
- ESP为栈指针寄存器,记录当前使用堆栈的地址(从大地址向小地址用)
- FS储存堆栈在内存中位置的地址(在 FS+4、FS+8 查看该堆栈大小)
- 堆栈内存使用顺序为从后向前
- 当使用数据超出堆栈大小时堆栈溢出(如递归数据较大或写错时),导致程序卡住或崩溃
堆栈就是内存(4GB)的草稿纸
EIP寄存器
存储CPU下次运行内存的地址
无法通过 MOV指令 修改其中的值
可通过 JMP/JCC指令 修改
//例
JMP 1
//相当于
MOV EIP,1
ESP寻址
利用栈顶指针寻址
EBP寻址
利用栈底指针寻址