这个问题在这里已有答案:
我正在学习x86程序集,并且对lea指令有一些麻烦 .
0x080486f7 <+21>: lea eax,[esp+0x18]
任何人都能解释一下这行会发生什么吗?根据我的理解,它采用[esp 0x18]的值并将该值解释为地址,并将地址中int的值放入eax中 .
基本上
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
eax = esp + 0x18
它将 esp + 0x18 存储在 eax 中 . 换句话说,它只是添加 . LEA经常用于执行基本算术 .
esp + 0x18
eax
2 回答
基本上
手段
在C中看起来像
与此同时
手段
在C中看起来像
它将
esp + 0x18
存储在eax
中 . 换句话说,它只是添加 . LEA经常用于执行基本算术 .