汇编中EBP寄存器和ESP寄存器的区别
Posted gotomars
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编中EBP寄存器和ESP寄存器的区别相关的知识,希望对你有一定的参考价值。
炎炎夏日,在实验室里热成狗了,所以准备学习点汇编让心凉一下。。。
目前看的书是刘颖东编著的《揭秘数据解密的关键技术》。
闲话不表,言归正传。
EBP和ESP都是汇编中关于指针的寄存器。但是定义不同:
(1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
(2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。
也就是说ESP是栈顶指针,EBP是取堆栈指针。
其中上面提到了一个栈帧的概念,百度百科的解释为“过程活动记录,是编译器用来实现函数调用的一种数据结构”。也可以说是对一次函数调用时记录相关信息的单元。而栈则存储了多个栈帧,也就是说存储了多个函数调用的记录单元。
其中函数调用的完整过程为:函数调用前,EBP的值入栈,ESP存储的是栈顶地址。然后ESP的值传给EBP,函数被调用,此时ESP一直指向栈顶。函数调用结束后,EBP将值传回ESP,ESP又指向了栈顶地址。
以上是关于汇编中EBP寄存器和ESP寄存器的区别的主要内容,如果未能解决你的问题,请参考以下文章