【发布时间】:2013-11-04 01:17:56
【问题描述】:
我收到了这些leal 说明,我必须填写它们的意思。
我一直在尝试研究 leal 指令的作用,但我一直很难在网上找到相关材料。我发现的是
leal (src1, src2), dst //dst = src2 + src1
此信息没有提供足够的信息,因为leal 指令远比这复杂。
这看起来怎么样?
假设%eax 持有值x,%ecx 持有值y。填写表格。
%edx = x + 6___________leal 6(%eax),%edx
%edx = x + y___________leal (%eax,%ecx),%edx
%edx = x * 5y___________leal (%eax,%ecx,4),%edx
%edx = 9x + 7___________leal 7(%eax,%eax,8),%edx
%edx = 4y + 10___________leal 0xA(,%ecx,4),%edx
%edx = x + 3y + 9___________leal 9(%eax,%ecx,2),%edx
【问题讨论】:
-
我会使用 intel 语法,这样更容易阅读。例如。
lea edx, [eax + 6]. -
@phuclv:如果您想在非指针值上为 LEA 提供规范副本,Using LEA on values that aren't addresses / pointers? 是我的尝试。 (但更多的是关于 LEA 与 MOV,而不是如何实际将其用于数学)。如果有的话,我比你链接的那个更喜欢这个问答。答案和问题,我可能会考虑将其复制。这么多 LEA 问题,这是一片混乱的荒地,有这么多分散的小答案来解释一个部分。您必须真正了解 CPU 和 asm 才能完全理解。