Hacker News new | ask | show | jobs
by CoastalCoder 1675 days ago
> why you would do xor rcx, rcx when that result is always 0

It's an idiomatic way to populate a register with the value zero.

Not sure if it's still true, but IIRC it took fewer cycles than the more obvious "load #0 into $rcx" instruction.

2 comments

These days you also get the benefit that it’s four bytes shorter, since it doesn’t have to store an immediate:

  48 31 c9                xor    rcx,rcx
  48 c7 c1 00 00 00 00    mov    rcx,0x0
(This is even shorter:

  31 c9                   xor    ecx,ecx
)
It should be easier for the processor to detect xor-reg-with-itself as a special case. Intel has documented this as the preferred instruction to use since the Pentium afaik.