"Оптимизация для 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 |
|
|