xor eax, x64 中的 eax

逆向工程 拆卸 部件 x64 补丁反转
2021-06-18 20:55:06

我有以下代码:

sub rsp, 40                 ; 00000028H
lea rcx, OFFSET FLAT:$SG4237
call    printf
xor eax, eax
add rsp, 40                 ; 00000028H
ret 0

为什么有xor eax, eax,而不是xor rax, rax

1个回答

在 x64 中,对 32 位寄存器的任何操作也会清除相应 64 位寄存器的前 32 位,因此无需使用xor rax, rax它需要额外的 REX 字节进行编码。