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是在堆栈中寻址用的

  • 相关阅读:
    canvas绘图详解-10-文字渲染
    canvas绘图详解-09-曲线的绘制原理
    websocket,vue链接
    JS 数组对象根据某一相同key合并成新的数组
    nuxt $axios访问多个服务器地址请求数据
    正则去除字符串中的html标签,但不去除<br>标签
    css多行文本溢出显示省略号(兼容ie)
    input accept
    jquery.toast
    jquery toast
  • 原文地址:https://www.cnblogs.com/milantgh/p/3902936.html
Copyright © 2011-2022 走看看