Why xor eax, eax? — Matt Godbolt’s blog

Artikeln förklarar varför instruktionen xor eax, eax är så vanlig i x86-assembly för att nollställa register, trots att mov eax, 0x0 kan verka tydligare. Kompilatorer föredrar xor eax, eax eftersom den är mer kompakt (två byte jämfört med fem byte för mov eax, 0x0), vilket minskar programstorleken och förbättrar användningen av instruktionscachen. Moderna x86-processorer optimerar ytterligare xor eax, eax genom att känna igen den som ett "zeroing idiom", vilket innebär att operationen tas bort från exekveringskön och utförs på noll cykler. Vid användning i 64-bitars sammanhang nollställer xor eax, eax (som skriver till den 32-bitars eax) automatiskt de övre 32 bitarna av rax utan extra kostnad. Kompilatorer som GCC och Clang använder även den 32-bitars varianten (xor r8d, r8d) för att nollställa utökade register, troligen av interna skäl.