私のコードは次のとおりです:(Windows 64ビット環境では、Windows 7、Core i5 520M CPU上のVisual Express 2012でデバッグ)
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 ビット プロセッサ用の Intel マニュアルでは、XOR 命令が上位 32 ビットもクリアすることを指定していません (Vol 2 B、ページ 4-531)。
これは他のプログラマーにも見られましたか?