"Оптимизация для PENTIUM процессора" - читать интересную книгу автора

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

Пример:
ADD EBX,4 / MOV EAX,[EBX] ; остановка AGI
В данном примере остановка AGI может быть легко удалена, путем добавления
других инструкций между ADD EBX,4 и MOV EAX,[EBX] или путем обмена их
местами:
MOV EAX,[EBX+4] / ADD EBX,4

Также может получиться остановка AGI при применении инструкций использующих
ESP для адресации, т.н. PUSH, POP, CALL и RET, если ESP была изменена в
предыдущем такте инструкцией типа MOV, ADD или SUB. Однако у Pentium есть
специальная схема, которая позволяет предсказать значение ESP после стековых
операций, таким образом вы не получите остановку AGI после использования PUSH,
POP и CALL. Однако вы можете получить остановку AGI после RET, если у него
есть операнд для добавления к ESP.

Примеры:
ADD ESP,4 / POP ESI ; остановка AGI
POP EAX / POP ESI ; нет остановки, спаривание
MOV ESP,EBP / RET ; остановка AGI
CALL L1 / L1: MOV EAX,[ESP+8] ; нет остановки
RET / POP EAX ; нет остановки
RET 8 / POP EAX ; остановка AGI

Инструкция LEA также приводит к остановке AGI, если она использует базовый или
индексный регистр, который был изменен в предыдущем такте.
INC ESI / LEA EAX,[EBX+4*ESI] ; остановка AGI


8. СПАРИВАНИЕ ИНСТРУКЦИЙ
========================
Pentuim снабжен двумя конвеерами для исполнения инструкций, называющиеся
U-труба и V-труба. при определенных условиях можно выполнить две инструкции
одновременно - одну в U-трубе, а другую в V-трубе. Это может практически
удвоить скорость. Следовательно стоит потратить время на оптимизацию, что бы
ваши инструкции спаривались.

Следующие инструкции спариваются в обоих трубах:
MOV регистр, память, или значение в регистре или памяти
PUSH регистр или значение
POP регистр
LEA, NOP
INC, DEC, ADD, SUB, CMP, AND, OR, XOR,
и некоторые виды TEST (смотри раздел 17.2)

Следующие инструкции спариваются только в U-трубе:
ADC, SBB