在64位ASM中。是否有一种很好的方法只能注意寄存器的底部32位

时间:2015-08-13 15:10:30

标签: x86 assembly

假设我们在RAX中有一些价值。我们希望不是RAX的低32位,而是保持高32位不变。这样做有什么好办法吗?

命令如:

not eax

不幸的是零延伸。

我可以这样做:

mov rbx,rax
not ebx ; or not rbx
and rax, 0xffffffff00000000
or rax, rbx

但感觉应该有更好的方式。

1 个答案:

答案 0 :(得分:6)

你可以用0x00000000ffffffff对它进行异或,这会翻转底部的32位。