Оптимизация программ на ассемблере. Часть 2В этой статье мы рассмотрим основные приемы оптимизации программ написанных на ассемблере. Напомню, что приступать к оптимизации есть смысл только тогда, когда программа уже практически окончательно написана и работает (причем правильно работает). В большинстве случаев оптимизацию по скорости имеет смысл проводить только в участках программы, выполняющихся многие сотни и тысячи раз - циклах. Обнуление регистров с помощью xorИспользуйте команду xor для обнуления регистров. Например команда Занесение в регистр единицыОптимальнее использовать не mov REG, 1, а Выполнение циклов задом напередОдин из самых важных приемов оптимизации цикла - это выполнение его задом наперед. Зачем? В большинстве случаев цикл имеет вид: Развертывание цикловЕсли тело цикла достаточно мало, то в цикле его можно повторить несколько раз, это избавит от такого же количества проверок и условных переходов Использование регистра EAXОчень многие команды имеют сокращенную форму - в том случае, когда один из операндов - регистр EAX. Это позволяет сэкономить один байт Использование команды LEA для быстрых арифметических вычисленийКоманду LEA можно (и нужно) использовать для некоторых арифметических вычислений, например: ПрефиксыКаждый префикс, например префикс переопределения сегмента, требует одного такта на декодирование и увеличивает программу на один байт. |