Полный текст

Зачем компилятору xor eax, eax?Если собрать статистику исполняемых команд на среднестатистическом Linux x86, рядом с mov и call обнаружится аномальное количество xor. Раньше это указывало бы на шифрование или отрисовку спрайтов. Сегодня всё прозаичнее: так компиляторы массово обнуляют регистры.Казалось бы, mov eax, 0 делает ровно то же самое и выглядит понятнее для человека. Однако генераторы кода упорно используют исключающее ИЛИ. За этим решением скрываются нюансы, связанные с длиной инструкций и работой процессорного конвейера.Изучим логику этой низкоуровневой оптимизации.