lea指令如何与esp交互?

我读到例如“lea eax,[ebp - 120]”基本上是指

mov    eax, ebp
sub     eax, 120

给出一个例子,esp在ebp-200,然后在函数中

lea eax, [ebp - 120]
push eax
call xyz

这是否意味着ebp-120的值被加载到eax寄存器中,然后这个4字节的值被压入栈中? 或者这意味着esp会进一步减少120,从而创建从ebp-200到ebp-320的缓冲区,尤其是在ebp-320?


LEA指令的目的是什么?

lea看起来比mov更花哨,但实际上它只做mov的一部分:mov计算地址并解除引用内存,只是计算地址。

在你的例子中,eax以120减去存储在ebp中的值,而不是存储在ebp中以120减去的地址处存储的值。 该值继续被推入堆栈。 如果这个程序集对应于C代码,那么eax / stack将包含一个指向某个变量的指针。

lea和esp之间没有直接的交互。 除非esp是lea的论点之一,否则lea不会读取或修改esp。

链接地址: http://www.djcxy.com/p/72391.html

上一篇: How does the lea instruction interact with esp?

下一篇: IA32 Assembly: lea instruction