【问题标题】:LEA in x86 assembly [duplicate]x86 程序集中的 LEA [重复]
【发布时间】:2014-04-05 07:56:15
【问题描述】:

我正在学习 x86 汇编,在 lea 指令方面遇到了一些问题。

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

谁能解释这一行发生了什么?据我了解,它取 [esp+0x18] 处的值并将该值解释为地址,并将地址的 int 值放入 eax。

【问题讨论】:

    标签: assembly x86


    【解决方案1】:

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

    【讨论】:

    • 我确信 asm 中没有滥用。
    • 好吧,那是个玩笑,但我已将“滥用”改为“使用”:)
    【解决方案2】:

    基本上

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 2012-07-12
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      相关资源
      最近更新 更多