汇编中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寄存器的区别的主要内容,如果未能解决你的问题,请参考以下文章

汇编之 eax, ebx, ecx, edx, esi, edi, ebp, esp??

课程学习总结报告

递归工作栈

汇编笔记二32位通用寄存器 以及 常用汇编指令

寄存器简介 与 ebp esp

函数调用参数传递