С чего начать с создания собственного ассемблера? - PullRequest
1 голос
/ 19 февраля 2012

Я пытаюсь сделать свой собственный ассемблер (как в NASM, MASM и т. Д.), Но я не знаю, с чего начать.Я понимаю сборку x86, но я не знаю, как работают ассемблеры.С чего мне начать?Google не помогает мне в этом случае.Есть какие-нибудь сайты, которые были бы полезны для изучения этого?

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Вам нужно перевести инструкции ассемблера в машинный код, рассчитать адреса и поместить все в объектный файл.Вам не нужно делать все за один проход.

Если вы ищете таблицу кодов операций, хорошей отправной точкой будет http://ref.x86asm.net/coder32.html или http://www.sandpile.org/.Конечно, можно использовать и официальную документацию по intel и amd.

Для формата объектного файла это зависит от того, что вы хотите сделать с кодом.Алекс указал, что чистый двоичный файл не может быть использован для чего-то большего, чем загрузочный сектор, ядро ​​или программа DOS * .com.Для всего остального вам понадобится информация о перемещении в объектном файле.

2 голосов
/ 19 февраля 2012

Ассемблер (не путать с компоновщиком) - это программа, которая выполняет две функции:

  • Заменяет метки фактическими адресами
  • Преобразует мемотехнические имена в коды операций и сохраняет их в так называемом объектном файле.

Все, что вам нужно, это справочная таблица, для которой сопоставляются имена и коды операций. Это должно быть довольно просто сделать это.

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