码迷,mamicode.com
首页 > 其他好文 > 详细

汇编中EBP寄存器和ESP寄存器的区别

时间:2018-08-04 20:20:45      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:数据结构   存储   入栈   解密   定义   实验   一个栈   inter   一个   

炎炎夏日,在实验室里热成狗了,所以准备学习点汇编让心凉一下。。。

目前看的书是刘颖东编著的《揭秘数据解密的关键技术》。

闲话不表,言归正传。

EBP和ESP都是汇编中关于指针的寄存器。但是定义不同:

(1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
(2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。

也就是说ESP是栈顶指针,EBP是取堆栈指针。

其中上面提到了一个栈帧的概念,百度百科的解释为“过程活动记录,是编译器用来实现函数调用的一种数据结构”。也可以说是对一次函数调用时记录相关信息的单元。而栈则存储了多个栈帧,也就是说存储了多个函数调用的记录单元。

其中函数调用的完整过程为:函数调用前,EBP的值入栈,ESP存储的是栈顶地址。然后ESP的值传给EBP,函数被调用,此时ESP一直指向栈顶。函数调用结束后,EBP将值传回ESP,ESP又指向了栈顶地址。

汇编中EBP寄存器和ESP寄存器的区别

标签:数据结构   存储   入栈   解密   定义   实验   一个栈   inter   一个   

原文地址:https://www.cnblogs.com/gotoMars/p/9419390.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!