push ebp到底是什么意思
最近看汇编语言,开头全是 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到底是什么意思相关推荐
- ebp 函数堆栈esp_对于ESP、EBP寄存器的理解
esp是栈指针,是cpu机制决定的,push.pop指令会自动调整esp的值: ebp只是存取某时刻的esp,这个时刻就是进入一个函数内后,cpu会将esp的值赋给ebp,此时就可以通过ebp对栈进行 ...
- C代码反汇编后的堆栈寄存器EBP和ESP
最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下. ebp--栈底指针 esp- ...
- 详解C++代码反汇编后的堆栈寄存器EBP和ESP
最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下. ebp--栈底指针 esp- ...
- 汇编语言C什么意思,C和汇编的对应—main之前之后的汇编到底在干什么
C和汇编的对应-main之前之后的汇编到底在干什么 Posted on 2010年07月21日 by sstompkins 下面以一个非常简洁的C来进行讲解ASM的实现方式 查看汇编语言实现方法,把程 ...
- 【转】 关于寄存器ESP和EBP的一些理解
[转] 关于寄存器ESP和EBP的一些理解 原文: http://blog.csdn.net/zsJum/article/details/6117043 一直对寄存器ESP和EBP的概念总是有些混淆, ...
- 对寄存器ESP和EBP的一些理解
PS:EBP是当前函数的存取指针.即存储或者读取数时的指针基地址:ESP就是当前函数的栈顶指针. 每一次发生函数的调用(主函数调用子函数)时,在被调用函数初始时,都会把当前函数(主函数)的EBP压栈, ...
- ebp 函数堆栈esp_函数堆栈调用过程
从内存的角度详细的分析C语言中的函数调用过程: 首先写一个测试用的代码: #include int add(int x, int y) { int z = 0; z = x + y; return z ...
- 通过一段汇编,加深对寄存器ESP和EBP的理解
一直对寄存器ESP和EBP的概念总是有些混淆,查看定义ESP是栈顶指针,EBP是存取堆栈指针.还是不能很透彻理解.之后借于一段汇编代码,总算是对两者有个比较清晰的理解. 下面是按调用约定__stdca ...
- 对esp和ebp分析来了解函数的调用过程
esp:扩展栈指针寄存器,是指针寄存器的一种,用于存放函数栈顶指针(栈顶指针) ebp:扩展基址指针寄存器,也被称为帧指针寄存器,用于存放函数栈底指针(栈底指针). esp和ebp有什么关系呢? eb ...
最新文章
- 如何成为一名无人驾驶工程师
- 用不同的姿势求逆序对(复习篇)
- PHP 入门 - 10.应用技术
- java线程基础知识
- 计算机简单故障时的排除方法,电脑简单故障排除解决办法大全
- java获取时间,本周,本月,本季度的起始
- 【论文阅读】Drug Similarity Integration Through Multi-view Graph Auto-Encoders | day4、5
- 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 R2 SP3补丁 64位 官方免费版
- 重磅!瑞泰信息发布中国企业数字化增长行业实践白皮书——《数字化平台造就企业增长新引擎》
- .NET 图片格式转换
- c语言的four是什么意思,【转】一些变态的编程语言
- 写给程序员的Flutter详细教程,大厂直通车!
- Python3 爬取豆瓣电影信息
- react高德地图定位--显示城市名字
- Java学生成绩排序输出的三种不同方法
- 《设计模式之美》学习笔记(二)
- APG(Accelerate Proximal Gradient)加速近端梯度算法 和 NAG(Nesterov accelerated gradient)优化器原理 (一)
- 2022年中国证券行业智能投顾专题分析
- ATE工程师的进阶之路(LabVIEW方向)
- 图解 Remembered Set、Card Table、Write Barrier