Печать кодов операций в файл
Просто любопытно, если открыть шестнадцатеричный редактор, набрать опкоды вручную и сохранить его. Например, ход 1 в регистр 1, ход 2 в регистр 2, затем вызов add, это даст мне рабочую программу? Или некоторые, как автоматизация этого дает мне дерьмовый компилятор?
РЕДАКТИРОВАТЬ: Забыл об ОС, у меня есть Mac OS X и Linux в моем распоряжении, x86 в качестве процессора.
3 ответа
Как я отметил в комментариях, ОС / платформа здесь важна. Большинство платформ ожидают какую-то структуру исполняемого файла (если только заголовок и т. Д.). например, смотрите формат a.out, используемый старыми версиями Unix.
Как вы уже указали, у вас есть Mac OS X, проверьте формат Mach-O.
Остерегайтесь, что печатать 'A0 A1'...
и т. д. отличается от помещения фактических байтов (в данном случае 160/161) в файл.
Пока у вас есть правильный формат файла для двоичного файла, то да.
Старые DOS-файлы.com были именно такими - необработанная программа, сериализованная на диск. Файлы.exe и unix ELF имеют структурированный формат, который включает (помимо прочего) информацию о перемещении.
Только если файл является правильно отформатированным исполняемым двоичным файлом. См. Ссылки на форматы COFF и ELF, например.
Вы также можете сбросить содержимое небольшого исполняемого файла, используя od
если вам интересно, как выглядит конкретный исполняемый файл.