При написании полного ассемблера нужно решить задачи взаимодействия с окружением:

Создаваемый бинарный код будет загружаться кодом загрузки ("загрузчиком").
Загрузчиков в принципе много. В linux один, в freedos другой, в BIOS/UEFI ещё разные, в GRUB.
И требования к оформлению загружаемого кода у загрузчиков разные.

Почему ELF? Его порекомендовал Уткин, упоминал в качестве проблемы Павиа.

Было у нас и обсуждение формата ELF (жаль, что быстро закончилось).

UPD: после изучения иностранного опыта выяснилось, что поддержку в ассемблере для ELF специально делать не обязательно. В крайнем случае пользователь ассемблера всё сам сделает при помощи dd/dw/db (ну, их русских аналогов).

Значит основная работа осталась определить синтаксис (команды процессора, директивы ассемблеру), сделать генерацию байтов команд, сделать вычисление значений выражений для адресов (типа $ - _start).

Отредактировано Лис (2018-07-16 12:47:17)