Есть ли какой-нибудь инструмент для проверки кодировки инструкций Intel x86? - PullRequest
0 голосов
/ 30 ноября 2010

Простите, если это может быть глупый вопрос, но я нахожусь в классе ассемблера, который в основном обучался с использованием эмулируемого процессора, который должен был научить понятиям ассемблера. Мы даже не написали программу для Intel, поэтому я пытаюсь приспособиться. В нашем эмулированном процессоре мы смогли сгенерировать файл таблицы символов, который дал байтовый эквивалент для инструкций:

http://imgur.com/tw5S8.png

Смогу ли я сделать это с помощью инструкций Intel x86?

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Существует демонстрационная программа, поставляемая с fasm.dll , в которой есть редактор и программа просмотра шестнадцатеричных символов: alt text

1 голос
/ 30 ноября 2010

Попробуйте IDA. Имеется опция для отображения двоичных значений кодов операций.

РЕДАКТИРОВАТЬ: Ну .. это дизассемблер.Попробуйте открыть двоичный файл и установите количество байтов кода операции (в Options / General /), которое будет отличным от нуля.

Если вы ищете IDE, которая показывает вам коды операций в реальном времениЧто касается инструкции, которую вы использовали, то я не думаю, что вы найдете ее из-за отсутствия «рынка».Можете ли вы объяснить, зачем вам это нужно?Вы хотите знать только их длину или хотите узнать их?Существует простой шаблон для длин, поэтому, разложив много двоичных файлов, вы поймаете его.Если вам нужны операционные коды ... ну, их много, правил почти нет, и практически бесполезно это делать.

Понятно ... тогда вам нужно сгенерировать файл списка .Ваш ассемблер должен иметь возможность для этого.(для NASM это -l listfile).Просто поместите любые инструкции в ваш файл .asm и создайте для них листинг.Он должен содержать двоичную кодировку для каждой инструкции.

Сначала получите Ссылка на набор инструкций Intel или, лучше, эту ссылку: http://siyobik.info/index.php?module=x86.Там вы найдете, что большинство кодов операций имеют несколько кодировок.В вашем конкретном случае бит 1 операционного кода указывает направление, и, поскольку оба операнда являются регистрами, вы можете переключать направление и менять регистровые коды, и результат будет одинаковым.Обычно у вас есть эта свобода в большинстве регистров для регистрации арифметических операций.Чтобы проверить это, попробуйте декомпилировать с IDA этот исходный файл:

db 02h, E0h
db 00h, C4h
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...