32位的LEA指令和MOV指令有何区别?
查了些资料,没看懂。。ea是“load effective address”的缩写,简单的说,lea指令可以用来将一个内存地址直接赋给目的操作数,例如:
lea eax,就是将ebx+8这个值直接赋给eax,而不是把ebx+8处的内存地址里的数据赋给eax。
而mov指令则恰恰相反,例如:
mov eax,则是把内存地址为ebx+8处的数据赋给eax。
假设EBX中当前存储了数字100
我可以理解成lea eax,执行后EAX=108,
而mov eax, 执行后,EAX=内存地址108中对应的数据?
这样理解对吗? 本帖最后由 SВ 于 2019-9-21 22:41 编辑
lea是“load effective address”的缩写,简单的说,lea指令可以用来将一个内存地址直接赋给目的操作数,例如:lea eax,就是将ebx+8这个值直接赋给eax,而不是把ebx+8处的内存地址里的数据赋给eax。而mov指令则恰恰相反,例如:mov eax,则是把内存地址为ebx+8处的数据赋给eax。
作者:匿名用户
链接:https://www.zhihu.com/question/40720890/answer/110774673
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
C语言的指针时传递参数时,反汇编你会发现用的都是LEA指令。 1. lea将有效地址传入寄存器
2. mov将立即数或者内存里面的数据移动到寄存器
页:
[1]