【发布时间】:2020-02-16 05:49:45
【问题描述】:
我正在做一些关于组装的项目,我遇到了以下命令:
lea (%rsi,%rsi,4),%rax
lea (%r9,%rax,2),%rsi
lea (%r8,%rdx,4),%rax
movzwl 0x402ac0(%rax,%rax,1),%eax
movslq 0x402740(,%rsi,4),%rdx
这里的 movzwl 和 movslq 是什么意思? 我知道他们将位从源移动到目标,但在此之前他们也进行了一些计算,我不明白他们如何计算然后将这些位移动到结果中。
谁能帮我解决这个问题?谢谢!
【问题讨论】:
-
如 here 所述,movzwl = 将零扩展字移动到长字。您可以通过类推得出结论,movzlq = move zero extend long to quad。计算是根据 AT&T 语法规则进行的。 A description of AT&T memory operand syntax.
标签: assembly x86 reverse-engineering att addressing-mode