сборка кода операции Intel x86 - PullRequest
0 голосов
/ 23 октября 2010

Есть ли способ написать программу, используя чистые коды операций Intel x86 вместо мнемоник и инструкций по сборке, а затем скомпилировать ее с помощью ML и LINK.Например, если я попытаюсь написать 55 вместо push ebp, ML думает, что это целое число.Требуется ли для этого специальный компилятор или как бы вы написали программу с кодом операции и скомпилировали ее?

Ответы [ 3 ]

2 голосов
/ 23 октября 2010

Вы можете использовать db:

db CDh,19h

вызывает прерывание 0x19.

0 голосов
/ 23 октября 2010

Короткий ответ: написать программу можно, используя только коды операций.Как показывает Smilingthax, вам все еще нужен ассемблер или другой инструмент для вывода двоичных значений каждого кода операции.

Вам нужно обратиться к документации Intel, чтобы узнать коды операций для каждого меммоника сборки.,Эта информация содержится в Справочнике разработчика программного обеспечения для архитектуры Intel (R), том 2: Справочное руководство по набору инструкций .

0 голосов
/ 23 октября 2010

Работа ассемблера заключается в переводе мнемоникса в двоичные значения. x86 - это набор инструкций CISC с длинной историей, поэтому этот перевод довольно сложно выполнить вручную.

Процесс компоновки еще хуже, он создает конечный исполняемый файл, который подразумевает создание множества структур. Это гораздо сложнее сделать и поддерживать вручную.

Если вы действительно хотите что-то написать с использованием кодов операций, возьмите hex-редактор (или даже блокнот, если вы знаете все коды ASCII :)) и напишите программу .COM. Все более сложное (.exe) будет излишним.

...