我的代码如下:(在 Windows 64 位环境下,在 Windows 7 上的 Visual Express 2012 中调试,Core i5 520M CPU)
mov edx, a_number_which_is_less than_16_bits
shl rdx,32 ; moves that number to upper 32 bits of RDX
<few lines that leave an useless number in EDX, but does not touch upper 32 bits of RDX>
xor edx,edx ; should clear the lower 32 bits of RDX keeping upper 32 bits intact
但它也清除了 RDX 的高 32 位...将整个 RDX 保留为零 64 位处理器的英特尔手册未指定 XOR 指令也清除高 32 位(第 2 B 卷,第 4-531 页)。
其他程序员是否也看到了这一点?