zoukankan      html  css  js  c++  java
  • 汇编 EBP ,ESP 寄存器

    知识点:
     CALL框架
     EBP寄存器 栈底指针
     ESP寄存器 栈顶指针
    一、EBP栈底指针
        EBP是一个特殊的寄存器,通过EBP+偏移量 可以访问CALL里边的局部变量。它的低16位叫BP。//EAX和AX的关系
    二、ESP栈顶指针
        ESP栈顶指针与EBP构成的一段空间大小,一般就是本CALL局部变量的空间大小总和。ESP指针配合EBP使用。//SP
    三、代码分析
    void fun1(void)
    {    //0401000  /$  55            PUSH EBP //保存栈环境或者叫保存EBP指针
        //0401001  |.  8BEC          MOV EBP,ESP
        //0401003  |.  5D            POP EBP //恢复EBP指针
        //0401004  .  C3            RETN
    }
    void fun2(void)
    {
        int a;
        int b=5;
    }
    void fun3(void)
    {
        fun2();
    }
    总结:
     1、每个CALL会分配一个独立的栈段空间,供局部变量使用.
        栈段空间大小一般要大于局部变量所需空间大小之和 ebp-esp=栈段空间大小。
     2、CALL栈平衡。进CALL前与出CALL后 EBP和ESP的值不变。
  • 相关阅读:
    java第九周上机
    安卓-计算器
    安卓第四周作业
    第十五周作业
    第十三周作业
    第十三周上机作业
    第十二周作业
    第十二周上机作业
    第十一周作业
    第十一周上机作业
  • 原文地址:https://www.cnblogs.com/whzym111/p/6365843.html
Copyright © 2011-2022 走看看