什么是堆栈
程序启动的时候操作系统会给每个程序一块虚拟的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
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论