zoukankan      html  css  js  c++  java
  • 汇编中EBP寄存器和ESP寄存器的区别

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

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

    闲话不表,言归正传。

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

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

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

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

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

  • 相关阅读:
    逆元
    C++快读
    最长单调上升子序列(LIS) O(nlogn)求法
    【简●解】巴厘岛的雕塑
    【简●解】学校食堂
    【简●解】[HNOI2005]星际贸易
    差分约束系统小结
    【简•解】花园
    最小生成树小结
    概率及期望DP小结
  • 原文地址:https://www.cnblogs.com/gotoMars/p/9419390.html
Copyright © 2011-2022 走看看