0xAA55 发表于 2014-12-5 18:14:51

【x64汇编】为什么没有movzxd

当我们需要把一个32位的整数写入一个64位寄存器,并且清空这个64位寄存器的高位,而不想使用两条指令(如下)的时候,我们就会想到用“MOVZXD”这个指令……xor rax,rax
mov eax,0xAA55为什么是MOVZXD?这条指令是什么意思?首先我们需要知道movzx这条指令,给32位寄存器赋值的时候,把高位清零。
那么加个“D”应该就是64位的了吧?

其实完全不需要MOVZXD这条指令。因为在x64的环境下,用mov指令给32位寄存器赋值就会自动清空它的高位。

所以,mov eax,0xAA55就会让rax的值为0x000000000000AA55
既然有人提到movzxd……我估计movsxd这条指令是存在的。
页: [1]
查看完整版本: 【x64汇编】为什么没有movzxd