Assembly x86汇编中的LEA

Assembly x86汇编中的LEA,assembly,x86,Assembly,X86,我正在学习x86汇编,在lea指令方面遇到了一些问题 0x080486f7 <+21>: lea eax,[esp+0x18] 0x080486f7:leaeax[esp+0x18] 有人能解释一下这一行发生了什么吗?据我所知,它接受[esp+0x18]处的值,并将该值解释为一个地址,然后将地址中的值放入eax。它将esp+0x18存储在eax中。换句话说,这只是加法。LEA经常用于执行基本的算术运算 基本上 mov eax, [esp+0x18] 意味着 在C中,这

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

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

有人能解释一下这一行发生了什么吗?据我所知,它接受[esp+0x18]处的值,并将该值解释为一个地址,然后将地址中的值放入eax。

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

基本上

mov eax, [esp+0x18]
意味着

在C中,这看起来像

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

lea eax, [esp+0x18]
意味着

在C中,这看起来像

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

我确信asm中没有滥用。好吧,这是个玩笑,但我已将“滥用”改为“使用”: