什么是堆栈
程序启动的时候操作系统会给每个程序一块虚拟的4G内存当程序需要使用的时候必须要和操作系统申请内存
堆栈是程序的心脏,程序中需要用到的重要数据,都在堆栈中体现
- 就是一块特殊的内存,操作系统在程序启动的时候已经分配好的,供程序执行时使用
- 和数据结构的堆栈无关
- 查看堆栈
正常内存使用从小地址往大地址使用,堆栈中从大地址往小地址使用
当堆栈用完了就会出现堆栈溢出错误
栈指针寄存器 ESP
ESP中存储了当前的堆栈用到哪里了
手工使用堆栈
- 存储数据
- 修改栈顶指针地址 (ESP寄存器)
堆栈自动管理
PUSH
将数据压入栈中
功能:
- 向堆栈压入数据
- 修改栈顶指针 ESP寄存器
指令格式:
PUSH r32
PUSH r16
PUSH m16
PUSH m32
PUSH imm/8/imm16/imm32
POP
将数据弹出堆栈
功能:
- 将栈顶数据存储到寄存器/内存
- 修改栈顶指针到ESP寄存器
指令格式:
POP r32
POP r16
POP m16
POP m32