3
我正在學習x86彙編,並且在lea指令中遇到了一些麻煩。x86集合中的LEA
0x080486f7 <+21>: lea eax,[esp+0x18]
任何人都可以解釋這一行發生了什麼?在我的理解中,它取[esp + 0x18]的值並將該值解釋爲地址,並將int地址的值放入eax中。
我正在學習x86彙編,並且在lea指令中遇到了一些麻煩。x86集合中的LEA
0x080486f7 <+21>: lea eax,[esp+0x18]
任何人都可以解釋這一行發生了什麼?在我的理解中,它取[esp + 0x18]的值並將該值解釋爲地址,並將int地址的值放入eax中。
它將esp + 0x18
存儲在eax
中。換句話說,它只是加法。 LEA經常用於執行基本的算術運算。
基本上
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
我相信存在ASM不濫用。 –
好吧,那是一個笑話,但我已經改變了「濫用」到「使用」:) – StilesCrisis