5.汇编-堆栈相关指令

admin 2018年5月13日00:37:06评论485 views字数 393阅读1分18秒阅读模式
摘要

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


什么是堆栈

程序启动的时候操作系统会给每个程序一块虚拟的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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2018年5月13日00:37:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   5.汇编-堆栈相关指令https://cn-sec.com/archives/51423.html

发表评论

匿名网友 填写信息