Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11642
Последний выпуск: 19.06.2015

Оптимизация для pentium процессора - замена сложных инструкций на более простые

11. ЗАМЕНА СЛОЖНЫХ ИНСТРУКЦИЙ НА БОЛЕЕ ПРОСТЫЕ
==============================================
Вы можете заменять инструкции чтения/модифицирования и
чтения/модифицирования/записи, что бы достигнуть спаривания. Пример:
ADD [mem1],EAX / ADD [mem2],EBX    ; 5 тактов
Этот код можно заменить на последовательность, выполняющуюся за 3 такта:
MOV ECX,[mem1] / MOV EDX,[mem2] / ADD ECX,EAX / ADD EDX,EBX
MOV [mem1],ECX / MOV [mem2],EDX

Подобным образом вы можете заменять не спаривающиеся инструкции:
PUSH [mem1] / PUSH [mem2]  ; не спаривающиеся
Заменяем на:
MOV EAX,[mem1] / MOV EBX,[mem2] / PUSH EAX / PUSH EBX  ; всегда спариваются

Другие примеры неспариваемых инструкций, которые можно заменить более
простыми:
CDQ  разбивается на:  MOV EDX,EAX / SAR EDX,31
NOT EAX  заменяется на  XOR EAX,-1
NEG EAX  разбивается на  XOR EAX,-1 / INC EAX
MOVZX EAX,BYTE PTR [mem]  разбивается на  XOR EAX,EAX / MOV AL,BYTE PTR [mem]
JECXZ  разбивается на  TEST ECX,ECX / JZ
LOOP   разбивается на  DEC ECX / JNZ
XLAT   заменяется на   MOV AL,[EBX+EAX]

Если при разбивании инструкций не увеличивается скорость, то вы можете
сохранить сложные, не спаривающиеся инструкции, для сокращения длины кода.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог