VituZz wrote:Сущность всех этих кросс-ассемблеров (и не кросс-), если сильно упростить - взять строчку текста и сгенерить соответствующую ей команду.
...
Так почему же мы наблюдаем массу начинаний и не видим достойного результата разработки таких ассемблеров?
Если сильно упростить, то ты, безусловно, прав! И такие сильно упрощенные вещи написать не трудно.
Я сам писАл их некоторое количество в безвыходной ситуации, вот мой пример кросс-ассемблера
для выдуманного мной же
ассемблера-интерпретатора под PIC16F84:
Но когда мы собираемся реально писать пусть небольшие, но программы, кросс-ассемблер должен
представлять собой удобный инструмент, и эти удобства, порой написать представляет собой задачу
довольно нетривиальную.
Вот как пример, я тут в нескольких ветках спрашивал, каковы правила разбора строки аргументов?
И ответы были довольно разные...
Как я увидел, автор
кросс-ассемблера для PDP11 (Windows/Linux, opensource) также столкнулся
с похожей проблемой, он пишет:
2 + 3 * 4 в строке аргумента исполняется как
(2 + 3) * 4, если нужен привычный результат, пишите:
2 + (3 * 4). Если ты такого примечания не знал, то
2 + 3 * 4 = 20 тебя несомненно удивит!
А есть и более сложные вещи, типа:
JMP METKA+2, к примеру...
Так что простейший ассемблер написАть не проблема, а вот написать хороший и удобный инструмент,
довольно нетривиальная задача...