Win32 сборка условных переходов
В отношении следующей ссылки на код операции: http://ref.x86asm.net/coder32.html
Я пытаюсь немного больше понять условные переходы. В ссылке, указанной выше, вы увидите, что код операции "Прыгай коротко, если ноль / равно (ZF=0)" равен 74. Поэтому, если мы (в отладчике) вставим двоичные байты 74 04 и флаг ZF будет установлен в 0, мы увидим короткий скачок вперед на 4 байта:
0207FF9F 74 04 JE SHORT 0207FFA5
Там нет проблем.
Позже в той же ссылке есть аналогичный условный короткий переход, на который ссылается код операции 85, однако, если вы вставите этот код с аналогичной длиной байта для условного перехода, вы получите следующее:
0207FFA5 850441 TEST DWORD PTR DS:[ECX+EAX*2],EAX
Я явно чего-то здесь не понимаю, кто-то может объяснить? Ограничены ли условные короткие переходы, основанные на значениях флагов, кодами операций с 70 по 7F?
Большое спасибо за любую помощь!
1 ответ
2-й 85
Вы нашли в таблице 2-байтовых кодов операций, где каждая запись имеет префикс 0F
,
"Ближайшая" (rel32) версия JZ/JE0F 85
, (Упс, этот HTML-фрагмент усекает список кодировок, получая лишь некоторые из 0F ..
версии rel32. Или фактически сломал не табличное форматирование для остальных. См. Оригинал Intel в формате PDF.
Эти таблицы кодов операций не являются справочными руководствами по набору команд. Они удобны, если вам просто нужен краткий справочник. Если вы когда-нибудь запутались, посмотрите инструкцию в полном руководстве (ссылки в теге x86 вики.