movzwl 0x402ac0(%rax,%rax,1),%eax和movslq 0x402740(,%rsi,4),%rdx在x86-64汇编中意味着什么?

问题描述 投票:0回答:1

我正在处理一些有关汇编的项目,并且遇到了以下命令:

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

有人可以帮我吗?谢谢!

assembly x86 reverse-engineering machine-code
1个回答
0
投票

movzwl从源中读取一个字(16位),将其零扩展到一起(32位),然后将其写入目标寄存器。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.