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

SHR, SAR, SHL, SAL со значением счетчиком
ROR, ROL, RCR, RCL со значением счетчиком 1

Следующие инструкции могут исполняться в обоих трубах, но спариваются только в
V-трубе: ближние вызовы, короткие и ближние переходы, короткие и ближние
условные переходы.

Все остальные инструкции могут исполняться только в U-трубе и не спариваются.

Две последовательные инструкции спарятся если будут выполнены следующие
условия:

8.1 Первая инструкция спаривается в U-трубе, а вторая в V-трубе.

8.2 Вторая инструкция не должна читать или писать в регистр, в который пишет
первая. Например:
MOV EAX, EBX / MOV ECX, EAX ; чтение после записи, не спариваются
MOV EAX, 1 / MOV EAX, 2 ; запись после записи, не спариваются
MOV EBX, EAX / MOV EAX, 2 ; запись после чтения, спариваются
MOV EBX, EAX / MOV ECX, EAX ; чтение после чтения, спариваются
MOV EBX, EAX / INC EAX ; чтение и запись после чтения, спариваются

8.3 В правилах 8.2 мы рассматривали части регистров, как полные регистры,
например:
MOV AL, BL / MOV AH, 0 ; запись в разные части одного регистра,
; не спариваются

8.4 Две инструкции, пишущие в разные части регистра флагов могут спариваться,
не смотря на правила 8.2 и 8.3 Например:
SHR EAX,4 / INC EBX ; спариваются

8.5 Инструкция, пишущая в флаги может спариваться с условным переходом, не
смотря на правило 8.2 Например:
CMP EAX, 2 / JA LabelBigger ; спаривается

8.6 Следующие инструкции могут спариваться, не смотря на то, что они
модифицируют указатель стека. Например:
PUSH + PUSH, PUSH + CALL, POP + POP

8.7 Есть различия в спаривании инструкций с префиксом.
Вот различные типы префиксов:
- инструкции, адресующие не типичный сегмент имеют префикс.
- инструкции, использующие 16 битные данные в 32 битном режиме, равно как
инструкции, использующие 32 битные данные в 16 битном режиме имеют
префикс размера операнда.
- инструкции, использующие 32 битные базовые или индексные регистры в
16 битном режиме имеют префикс размера операнда.
- повторяющиеся строковые инструкции имеют префикс повторения.
- заблокированные инструкции имеют префикс блокировки.
- многие двухбайтные инструкции, не присутствующие в процессоре 80086