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