В ходе одного из своих докладов о ассемблере я представил список из 20 наиболее часто выполняемых команд на десктопах с архитектурой x86 под управлением Linux. В числе привычных команд, таких как mov, add и jmp, оказалось и неожиданное XOR. Это вызвало удивление, так как в прошлые времена, когда я работал с 6502, данная команда часто указывала на шифрование или обработку спрайтов. Однако, как выясняется, компиляторы используют XOR для присвоения нулевого значения регистрам. Например, при компиляции программы с опцией -O2, вместо понятного mov eax, 0, мы видим xor eax, eax, что экономит три байта. Это сокращение кода улучшает эффективность использования кэша команд. Более того, процессоры x86 оптимизируют выполнение этой команды, позволяя ей занимать ноль тактов. Интересно, что для 64-битных регистров XOR не применяется, так как при записи в eax автоматически обнуляются старшие 32 бита. Таким образом, использование XOR не только уменьшает размер кода, но и ускоряет его выполнение благодаря оптимизациям компиляторов.