转:汇编中EBP寄存器和ESP寄存器的区别
2024-09-06 02:23:12
EBP和ESP都是汇编中关于指针的寄存器。但是定义不同:
(1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
(2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。
也就是说ESP是栈顶指针,EBP是取堆栈指针。
其中上面提到了一个栈帧的概念,百度百科的解释为“过程活动记录,是编译器用来实现函数调用的一种数据结构”。也可以说是对一次函数调用时记录相关信息的单元。而栈则存储了多个栈帧,也就是说存储了多个函数调用的记录单元。
其中函数调用的完整过程为:函数调用前,EBP的值入栈,ESP存储的是栈顶地址。然后ESP的值传给EBP,函数被调用,此时ESP一直指向栈顶。函数调用结束后,EBP将值传回ESP,ESP又指向了栈顶地址。
另外在 https://www.tenouk.com/Bufferoverflowc/Bufferoverflow2a.html 里面详细描述了ESP和EBP的意义
最新文章
- 08.LoT.UI 前后台通用框架分解系列之——多样的Tag选择器
- HTTP和HTTPS的区别
- 在win7下安装unbuntu系统
- python练习程序(c100经典例11)
- ASP.NET生成日历
- javascript 中caller,callee,call,apply 的概念[转载]
- Android虚拟机GenyMotion-- 遇到的问题
- MATLAB图像处理基础
- sql中插入多条记录-微软批处理
- php学习笔记——基础知识(2)
- 智联招聘 卓聘IM演进过程
- 浅显总结ASCII Unicode UTF-8的区别
- Asp.net 按钮幕布遮盖效果实现方式
- Google机器学习课程基于TensorFlow : https://developers.google.cn/machine-learning/crash-course
- springboot12-zuul
- if __name__ == __'main'__: 判断讲解
- SpringMVC的请求处理流程
- 打开Word时出现“The setup controller has encountered a problem during install. Please ...”
- mysql之event
- Android Native Hook技术(二)