Что быстрее: JMP или строка NOP? - PullRequest
11 голосов
/ 21 июля 2011

Я использую двоичную трансляцию и мне приходится иметь дело с последовательностями NOP (0x90) длиной около 16 кодов операций. Разве для производительности лучше помещать JMP (в конец) при запуске таких последовательностей?

Ответы [ 3 ]

13 голосов
/ 21 июля 2011

Руководство разработчика программного обеспечения Intel для архитектуры , том 2B (инструкции NZ) содержит следующую таблицу (стр. 4-12) о NOP:

Таблица 4-9,Рекомендованная многобайтовая последовательность инструкции NOP

Length    Assembly                                   Byte Sequence
=================================================================================
2 bytes   66 NOP                                     66 90H
3 bytes   NOP DWORD ptr [EAX]                        0F 1F 00H
4 bytes   NOP DWORD ptr [EAX + 00H]                  0F 1F 40 00H
5 bytes   NOP DWORD ptr [EAX + EAX*1 + 00H]          0F 1F 44 00 00H
6 bytes   66 NOP DWORD ptr [EAX + EAX*1 + 00H]       66 0F 1F 44 00 00H
7 bytes   NOP DWORD ptr [EAX + 00000000H]            0F 1F 80 00 00 00 00H
8 bytes   NOP DWORD ptr [EAX + EAX*1 + 00000000H]    0F 1F 84 00 00 00 00 00H
9 bytes   66 NOP DWORD ptr [EAX + EAX*1 + 00000000H] 66 0F 1F 84 00 00 00 00 00H

Это позволяет вам создать "заполнение NOP" определенных размеров.С двумя из них вы можете соединить 16 байт, хотя я и предлагаю проверить руководства по оптимизации (для целевого процессора), является ли JMP быстрее двух таких NOPs.

4 голосов
/ 21 июля 2011

Если NOP s выровнять поток, то они имеют большее значение, чем просто NO OP.если вас интересует чистая скорость, см. Руководства по оптимизации Agner Fog Vol.4 .

1 голос
/ 21 июля 2011

- это двоичный перевод, я бы начал с перевода (их в эквивалентные nops в целевой системе). Как только все заработает, оптимизируйте мертвый код. В то же время, так как эта строка инструкций попалась вам на глаза, попытайтесь понять, для чего они там были, возможно, ожидая, что аппаратные средства что-то предпримут, и убедитесь, что ваша переведенная система функционирует так же.

...