- UID
- 1
- 精华
- 245
- 积分
- 75965
- 威望
- 744 点
- 宅币
- 24265 个
- 贡献
- 46222 次
- 宅之契约
- 0 份
- 最后登录
- 2024-5-3
- 在线时间
- 2299 小时
- QQ
用户组: 管理员
一只技术宅
- UID
- 1
- 精华
- 245
- 威望
- 744 点
- 宅币
- 24265 个
- 贡献
- 46222 次
- 宅之契约
- 0 份
- 在线时间
- 2299 小时
- 注册时间
- 2014-1-26
|
当我们需要把一个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这条指令是存在的。 |
|