Bargest писал(а):
Так что польза тут скорее в том, что один и тот же FASM с помощью пары файлов с макросами можно заставить ассемблировать под разные архитектуры. Получаем все ассемблеры в одном.
И да, и нет. Технически с помощью макросов генерировать нужный машинный код, конечно, можно. Но вот обеспечить корректные записи перемещений, правильную отладочную информацию и т.п. намного сложней. Хотя, насколько понимаю, всё это на ФАСМе сделать можно, но... Это изврат какой-то будет, очень сложный в отладке и отличающийся низкой производительностью (по сравнению с нормально написанным транслятором, специально заточенным под нужную архитектуру). Ну и следует помнить о том, что макросы вряд ли позволяют покрыть все возможные особенности синтаксиса команд разных архитектур, т.е., возможно, придётся записывать команды не так, как принято для конкретной архитектуры -- а в общем и целом это не есть хорошо. Но, поскольку сам я ФАСМ не использовал, то утверждать не буду.
В общем же, в таких извращениях я в принципе не вижу никакого смысла. Максимум, для чего оно может потребоваться на практике, -- это добавление новых команд процессора, которые почему-то не внесены в собственно транслятор. Но, учитывая открытость ФАСМа и его активную поддержку, вряд ли реальная нужда в таком возникнет.