"Оптимизация для PENTIUM процессора" - читать интересную книгу автораПример 6: MOV ESI, [A] MOV EAX, [N] MOV EDI, [B] XOR ECX, ECX LEA ESI, [ESI+4*EAX] ; указатель на конец массива A SUB ECX, EAX ; -N LEA EDI, [EDI+4*EAX] ; указатель на конец массива B JZ SHORT L3 XOR EBX, EBX MOV EAX, [ESI+4*ECX] INC ECX JZ SHORT L2 L1: SUB EBX, EAX ; u MOV EAX, [ESI+4*ECX] ; v (спаривание) MOV [EDI+4*ECX-4], EBX ; u INC ECX ; v (спаривание) MOV EBX, 0 ; u JNZ L1 ; v (спаривание) L2: SUB EBX, EAX MOV [EDI+4*ECX-4], EBX L3: дает возможность улучшить спаривание. Инструкция MOV EBX, 0 вставлена между INC ECX и JNZ L1 не для улучшения спаривания, а для того что бы избежать остановки AGI. Развертывание цикла ------------------- Наиболее часто предлагаемая схема улучшения цикла - это исполнение двух операций вместо одной за каждую итерацию, таким образом вдвое снижая необходимое количество повторений цикла. Это называется развертыванием цикла. Пример 7: MOV ESI, [A] MOV EAX, [N] MOV EDI, [B] XOR ECX, ECX LEA ESI, [ESI+4*EAX] ; указатель на конец массива A SUB ECX, EAX ; -N LEA EDI, [EDI+4*EAX] ; указатель на конец массива B JZ SHORT L2 TEST AL,1 ; тест на нечетность N JZ SHORT L1 MOV EAX, [ESI+4*ECX] ; N - нечетное. делаем четным |
|
|