При написании полного ассемблера нужно решить задачи взаимодействия с окружением:
Создаваемый бинарный код будет загружаться кодом загрузки ("загрузчиком").
Загрузчиков в принципе много. В linux один, в freedos другой, в BIOS/UEFI ещё разные, в GRUB.
И требования к оформлению загружаемого кода у загрузчиков разные.
Почему ELF? Его порекомендовал Уткин, упоминал в качестве проблемы Павиа.
Было у нас и обсуждение формата ELF (жаль, что быстро закончилось).
UPD: после изучения иностранного опыта выяснилось, что поддержку в ассемблере для ELF специально делать не обязательно. В крайнем случае пользователь ассемблера всё сам сделает при помощи dd/dw/db (ну, их русских аналогов).
Значит основная работа осталась определить синтаксис (команды процессора, директивы ассемблеру), сделать генерацию байтов команд, сделать вычисление значений выражений для адресов (типа $ - _start).
Отредактировано Лис (2018-07-16 12:47:17)