Найти в Дзене

Использование XOR и SUB для быстрого обнуления регистров

Продолжаю мучить вас ассемблером. Хотя вот здесь в комментариях многие сошлись во мнении, что ассемблер нахрен никому не нужен, я с этим не согласен. Совсем не согласен.

Многим не нужна и физика, и математика. Уткнувшись в свои смартфоны, они погружаются в виртуальный мир и искренне считают, что булки растут на деревьях, забывая при этом, что без физики и математики не было бы никаких смартфонов.

Многим не нужны ни литература, ни искусство. Пожрать да поспать. Потреблядство - смысл жизни. Ну да ладно. Не будем погружаться в дебри социальных неурядиц.

Лично я считаю, что ассемблер и язык ассемблера нужны хотя бы потому, что это интересно. Их изучение позволяет лучше понять, как устроен компьютерный мир. И кроме всего прочего развивает мозг. Так что про ассемблер я буду писать и дальше. А сегодня раскрою небольшой секрет - почему опытные программисты используют

XOR AX, AX

вместо

MOV AX, 0

Как вы думаете? Если знаете - не подсказывать )))

Что такое XOR рассказывать не буду - подробности здесь: статья и видео.

Расскажу только суть. Дело в том, что команда XOR выполняется быстрее, чем команда MOV. В этом и смысл. Хотя команда MOV более понятна и смотрится более логично.

Скажите, какой смысл экономить какие-то микро- или даже наносекунды на современных компьютерах? Ну если в вашей программе одна такая команда, то смысла нет. А вот если тысяча?

В итоге некоторые программы грузятся несколько секунд или даже минут, и работают на новых компах так, как-будто у вас Pentium I, а не Intel Core.

Тот же итог - обнуление регистра - можно получить с помощью команды SUB:

SUB AX, AX

Здесь мы вычитаем число из самого себя, в итоге получаем 0. И команда SUB работает также быстрее, чем MOV. Хотя в примерах исходных кодов вы чаще встретите первый способ, то есть команду XOR.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.