【发布时间】:2018-07-28 07:27:21
【问题描述】:
我是汇编语言的新手。我目前正在处理这个Assembly Guide。我对 LEA 指令有疑问。我对LEA指令的理解是LEA用源操作数的有效地址加载目的操作数
以下示例来自同一链接。
lea edi, [ebx+4*esi] — the quantity EBX+4*ESI is placed in EDI.
lea eax, [var] — the value in var is placed in EAX.
lea eax, [val] — the value val is placed in EAX.
在上面的第 2 和第 3 示例注释中,表示值已加载到 EAX 中。这是我的困惑。请告诉我是否可以使用 LEA 指令加载有效地址以及目标操作数中的值。
上图来自 youtube 的 Open SecurityTraining 频道的 Introduction to assembly language。
谢谢。
【问题讨论】:
-
第二和第三错了。地址被放入
eax。如有疑问,请查阅官方参考资料(谷歌查看英特尔手册 2) -
在更新中添加的问题的第二部分与stackoverflow.com/questions/46597055/… 完全相同:是的,LEA 可用于移动/添加任何值,即使该值不是地址。第一部分:解决指南/教程中示例中的措辞错误引起的混淆是一个有效的问题。由错误的指南/教程引起的混乱使一个原本太微不足道的问题有效,IMO。