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 вики.

Другие вопросы по тегам