我有下面的代码:

评论

因为返回值很可能是“ int”,所以在大多数编译器模型(LP64 / LLP64)中该值为32位。

为什么32位寄存器上的x86-64指令将整个64位寄存器的上半部分归零?

#1 楼

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