您的位置:首页 > 其它

汇编指令---CDQ

2015-12-18 08:40 246 查看
CDQ 是一个让很多人感到困惑的指令。
这个指令把 EAX 的第 31 bit 复制到 EDX 的每一个 bit 上。 它大多出现在除法运算之前。它实际的作用只是把EDX的所有位都设成EAX最高位的值。也就是说,当EAX <80000000, EDX 为00000000;当EAX >= 80000000, EDX 则为FFFFFFFF。

例如 :

假设 EAX 是 FFFFFFFB (-5) ,它的第 31 bit (最左边) 是 1,

执行 CDQ 后, CDQ 把第 31 bit 复制至 EDX 所有 bit

EDX 变成 FFFFFFFF

这时候, EDX:EAX 变成 FFFFFFFF FFFFFFFB ,它是一个 64 bit 的大型数字,数值依旧是 -5。

备注:

EDX:EAX,这里表示EDX,EAX连用表示64位数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: