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的意义

最新文章

  1. 08.LoT.UI 前后台通用框架分解系列之——多样的Tag选择器
  2. HTTP和HTTPS的区别
  3. 在win7下安装unbuntu系统
  4. python练习程序(c100经典例11)
  5. ASP.NET生成日历
  6. javascript 中caller,callee,call,apply 的概念[转载]
  7. Android虚拟机GenyMotion-- 遇到的问题
  8. MATLAB图像处理基础
  9. sql中插入多条记录-微软批处理
  10. php学习笔记——基础知识(2)
  11. 智联招聘 卓聘IM演进过程
  12. 浅显总结ASCII Unicode UTF-8的区别
  13. Asp.net 按钮幕布遮盖效果实现方式
  14. Google机器学习课程基于TensorFlow : https://developers.google.cn/machine-learning/crash-course
  15. springboot12-zuul
  16. if __name__ == __'main'__: 判断讲解
  17. SpringMVC的请求处理流程
  18. 打开Word时出现“The setup controller has encountered a problem during install. Please ...”
  19. mysql之event
  20. Android Native Hook技术(二)

热门文章

  1. Vue组件封装之无限滚动列表
  2. git撤销文件的修改
  3. django ORM教程(转载)
  4. 在自己的项目中使用PCL
  5. Microfacet模型采样下的brdf
  6. 12306抢票算法居然被曝光了!!!居然是redis实现的
  7. redis无法连接
  8. .NET 排序 Array.Sort<T> 实现分析
  9. GoLang设计模式08 - 命令模式
  10. 沈抚示范区·“华为云杯”2021全国AI大赛圆满落