Оптимизация для 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] Если при разбивании инструкций не увеличивается скорость, то вы можете сохранить сложные, не спаривающиеся инструкции, для сокращения длины кода.
