首页 文章

x86汇编中的LEA [重复]

提问于
浏览
4

这个问题在这里已有答案:

我正在学习x86程序集,并且对lea指令有一些麻烦 .

0x080486f7 <+21>:  lea    eax,[esp+0x18]

任何人都能解释一下这行会发生什么吗?根据我的理解,它采用[esp 0x18]的值并将该值解释为地址,并将地址中int的值放入eax中 .

2 回答

  • 0

    基本上

    mov eax, [esp+0x18]
    

    手段

    mov eax, esp
    add eax, 0x18
    mov eax, [eax]
    

    在C中看起来像

    eax = *(unsigned int*)(esp + 0x18)
    

    与此同时

    lea eax, [esp+0x18]
    

    手段

    mov eax, esp
    add eax, 0x18
    

    在C中看起来像

    eax = esp + 0x18
    
  • 3

    它将 esp + 0x18 存储在 eax 中 . 换句话说,它只是添加 . LEA经常用于执行基本算术 .

相关问题