最近看汇编语言,开头全是 push ebp ; mov  ebp, esp

首先看两个寄存器

ESP:extended stack pointer, 扩展栈指针寄存器,是指针寄存器, 用于存放函数栈顶指针。(我觉得)esp始终指向栈顶。

EBP:extended base pointer , 扩展基址指针寄存器,也叫帧指针寄存器,用于存放函数栈底指针。

栈指针与帧指针标识出了当前活动记录的位置。

在x86里面,reg-reg(从寄存器到寄存器)的移动是可以的,但不可以mem-mem(从内存直接到内存)。

然后解释一下这两句是什么意思

push ebp是把ebp放到stack(栈)里。这步之后,esp的地址应该-4。理由是esp始终指向栈顶,ebp把它的东西放到栈里之后,栈里多的东西占了4个地址,而且栈向低地址增长的,所以地址减4。

mov ebp,esp是把esp里面的东西放到ebp里。这一步做完之后,ebp里面的东西就更新了。

多说一句,pop ebp的意思是:把栈里弹出来的值赋给ebp。(我曾经以为是把ebp从栈里弹出来...)

push ebp到底是什么意思相关推荐

  1. ebp 函数堆栈esp_对于ESP、EBP寄存器的理解

    esp是栈指针,是cpu机制决定的,push.pop指令会自动调整esp的值: ebp只是存取某时刻的esp,这个时刻就是进入一个函数内后,cpu会将esp的值赋给ebp,此时就可以通过ebp对栈进行 ...

  2. C代码反汇编后的堆栈寄存器EBP和ESP

    最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下. ebp--栈底指针 esp- ...

  3. 详解C++代码反汇编后的堆栈寄存器EBP和ESP

    最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下. ebp--栈底指针 esp- ...

  4. 汇编语言C什么意思,C和汇编的对应—main之前之后的汇编到底在干什么

    C和汇编的对应-main之前之后的汇编到底在干什么 Posted on 2010年07月21日 by sstompkins 下面以一个非常简洁的C来进行讲解ASM的实现方式 查看汇编语言实现方法,把程 ...

  5. 【转】 关于寄存器ESP和EBP的一些理解

    [转] 关于寄存器ESP和EBP的一些理解 原文: http://blog.csdn.net/zsJum/article/details/6117043 一直对寄存器ESP和EBP的概念总是有些混淆, ...

  6. 对寄存器ESP和EBP的一些理解

    PS:EBP是当前函数的存取指针.即存储或者读取数时的指针基地址:ESP就是当前函数的栈顶指针. 每一次发生函数的调用(主函数调用子函数)时,在被调用函数初始时,都会把当前函数(主函数)的EBP压栈, ...

  7. ebp 函数堆栈esp_函数堆栈调用过程

    从内存的角度详细的分析C语言中的函数调用过程: 首先写一个测试用的代码: #include int add(int x, int y) { int z = 0; z = x + y; return z ...

  8. 通过一段汇编,加深对寄存器ESP和EBP的理解

    一直对寄存器ESP和EBP的概念总是有些混淆,查看定义ESP是栈顶指针,EBP是存取堆栈指针.还是不能很透彻理解.之后借于一段汇编代码,总算是对两者有个比较清晰的理解. 下面是按调用约定__stdca ...

  9. 对esp和ebp分析来了解函数的调用过程

    esp:扩展栈指针寄存器,是指针寄存器的一种,用于存放函数栈顶指针(栈顶指针) ebp:扩展基址指针寄存器,也被称为帧指针寄存器,用于存放函数栈底指针(栈底指针). esp和ebp有什么关系呢? eb ...

最新文章

  1. 如何成为一名无人驾驶工程师
  2. 用不同的姿势求逆序对(复习篇)
  3. PHP 入门 - 10.应用技术
  4. java线程基础知识
  5. 计算机简单故障时的排除方法,电脑简单故障排除解决办法大全
  6. java获取时间,本周,本月,本季度的起始
  7. 【论文阅读】Drug Similarity Integration Through Multi-view Graph Auto-Encoders | day4、5
  8. 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 R2 SP3补丁 64位 官方免费版
  9. 重磅!瑞泰信息发布中国企业数字化增长行业实践白皮书——《数字化平台造就企业增长新引擎》
  10. .NET 图片格式转换
  11. c语言的four是什么意思,【转】一些变态的编程语言
  12. 写给程序员的Flutter详细教程,大厂直通车!
  13. Python3 爬取豆瓣电影信息
  14. react高德地图定位--显示城市名字
  15. Java学生成绩排序输出的三种不同方法
  16. 《设计模式之美》学习笔记(二)
  17. APG(Accelerate Proximal Gradient)加速近端梯度算法 和 NAG(Nesterov accelerated gradient)优化器原理 (一)
  18. 2022年中国证券行业智能投顾专题分析
  19. ATE工程师的进阶之路(LabVIEW方向)
  20. 图解 Remembered Set、Card Table、Write Barrier

热门文章

  1. Revit出图问题:打印机中新建纸张尺寸?批量导出图纸?
  2. 历史总是在重演,AI寒冬或再来
  3. ShadowLayout 实现阴影效果
  4. 六、文件管理(1.文件和文件系统)
  5. 使用云祺虚拟机备份软件瞬时恢复H3C CAS 虚拟机
  6. 谷歌浏览器Console不显示error信息
  7. 如何在CSDN博客栏目中添加“给我写信”
  8. 【资源】公开的电子书 合集 (计算机相关、多高清、pdf)
  9. 用DiskGenius彻底删除文件能不能确保无法恢复
  10. ssh和telnet客户软件ZOC如何设置UTF-8