清除rbx的高32位

时间:2011-01-24 08:44:07

标签: 64-bit

清除x86_64 GPR(r?x)的高32位的最快指令是什么?

2 个答案:

答案 0 :(得分:2)

不是很老and不够好吗?

and rbx,0ffffffffh

答案 1 :(得分:1)

也许在某些情况下它可能最终不是更快的方法,但一般来说它应该:使用mov reg32,reg32

英特尔语法示例:

mov ebx, ebx ; The topmost 32 bits of rbx will be cleared
mov r11d, r11d ; The topmost 32 bits of r11 will be cleared

它起作用的原因是因为当你写一个32位寄存器时,它的64位兄弟会将其高32位清零。 “或reg32,reg32”,“和reg32,reg32”,“添加reg32,0”等也会发生同样的情况。

在使用某种方法清除高32位之前,请确保您确实需要执行此类操作,因为您的代码可能会开始使用32位操作(将自动清除高32位),在需要使用64位宽的操作数之前。