zoukankan      html  css  js  c++  java
  • EBP与ESP寄存器的使用

    push  ebp

    mov  esp,ebp


      esp是堆栈指针 
      ebp是基址指针 

    这两条指令的意思是将栈顶指向ebp的地址 
      --------------------------------------------------------------- 

     例如:

    push    ebp      ;ebp入栈 
      mov     ebp, esp  ;因为esp是堆栈指针,无法暂借使用,所以得用ebp来存取堆栈
      sub      esp, 4*5  ;下面的wsprintf一共使用了5个参数,每个参数占用4个字节,所以要入栈4*5个字节 
      push    1111 
      push    2222 
      push    3333 
      push    offset szFormat 
      push    offset szOut 
      call     wsprintf       ;调用wsprintf 
      add     esp, 4*5     ;堆栈使用完毕,“还”回4*5个字节给系统 
      ... 
      mov     esp, ebp     ;恢复esp的值 
      pop      ebp        ;ebp出栈 
      ret 

    主要是用来保存/恢复堆栈,以便传递参数给函数。 
      在MASM里面,有一条更方便的语句,就是invoke, 使用它后,你就不用自己做这些事情了。 
      --------------------------------------------------------------- 
      esp始终指向栈顶,ebp是在堆栈中寻址用的

  • 相关阅读:
    Oslec Echo Canceller:开源回声消除方案
    引用:SpeechLinks
    打印论文分类
    语音算法方案公司
    推送 push
    Android完美多语言应用,不重启应用,不改变系统语言
    定时任务quartz
    在android平台解决找不到sun.misc.BASE64Enocder的问题
    IOS背景view隐藏键盘
    为ExpandableListView自定义Item
  • 原文地址:https://www.cnblogs.com/milantgh/p/3902936.html
Copyright © 2011-2022 走看看