找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 4142|回复: 0

【x64汇编】为什么没有movzxd

[复制链接]

1112

主题

1653

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
245
威望
744 点
宅币
24265 个
贡献
46222 次
宅之契约
0 份
在线时间
2299 小时
注册时间
2014-1-26
发表于 2014-12-5 18:14:51 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

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

其实完全不需要MOVZXD这条指令。因为在x64的环境下,用mov指令给32位寄存器赋值就会自动清空它的高位。
QQ图片20141205181013.jpg
所以,mov eax,0xAA55就会让rax的值为0x000000000000AA55
既然有人提到movzxd……我估计movsxd这条指令是存在的。
回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-5-6 00:15 , Processed in 0.044134 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表