什么是堆栈

程序启动的时候操作系统会给每个程序一块虚拟的4G内存当程序需要使用的时候必须要和操作系统申请内存
堆栈是程序的心脏,程序中需要用到的重要数据,都在堆栈中体现

  1. 就是一块特殊的内存,操作系统在程序启动的时候已经分配好的,供程序执行时使用
  2. 和数据结构的堆栈无关
  3. 查看堆栈

正常内存使用从小地址往大地址使用,堆栈中从大地址往小地址使用
当堆栈用完了就会出现堆栈溢出错误

栈指针寄存器 ESP

ESP中存储了当前的堆栈用到哪里了

手工使用堆栈

  1. 存储数据
  2. 修改栈顶指针地址 (ESP寄存器)

堆栈自动管理

PUSH

将数据压入栈中

功能:

  1. 向堆栈压入数据
  2. 修改栈顶指针 ESP寄存器

指令格式:

PUSH r32
PUSH r16
PUSH m16
PUSH m32
PUSH imm/8/imm16/imm32

POP

将数据弹出堆栈

功能:

  1. 将栈顶数据存储到寄存器/内存
  2. 修改栈顶指针到ESP寄存器

指令格式:

POP r32
POP r16
POP m16
POP m32