movzwl 0x402ac0(%rax,%rax,1),%eax 和 movslq 0x402740(,%rsi,4),%rdx 在 x86-64 程序集中是什么意思?

what does movzwl 0x402ac0(%rax,%rax,1),%eax and movslq 0x402740(,%rsi,4),%rdx mean in x86-64 assembly?

我正在做一些关于汇编的项目,我遇到了以下命令:

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是什么意思? 我知道他们将位从源移动到目的地,但在此之前他们也进行了一些计算,我不明白他们如何计算然后将这些位移动到结果中。

谁能帮我解决这个问题?谢谢!

movzwl 从源中读取一个字(16 位),将其零扩展为长整数(32 位),并将其写入目标寄存器。

movslq 从源中读取一个 long(32 位),将其符号扩展为一个 qword(64 位,将位 31 复制到位 63:32),并将其写入目标寄存器。

寻址模式 0x402ac0(%rax,%rax,1) 计算 rax+rax+0x402ac0 并将其用作操作数的地址。

寻址模式 0x402740(,%rsi,4) 计算 rsi*4+0x402740 并将其用作操作数的地址。