Нет, можно получить только те форматы, которые указаны в справке. Компилятор просто не рассчитан на генерацию множества форматов, там и так всё очень запутано. Первоначально, я задумывал генерацию исполняемых файлов только для Windows. Для Колибри я не собирался делать, но формат файлов оказался уж очень простым. Конечно, опыта разработки компиляторов у меня не было, а читать специальную литературу я не хотел -- мне было интересно самостоятельно во всём разобраться. Но и не переусложнить задачу -- поэтому нет сборщика мусора (хотя оберон-07 это язык для микроконтроллеров и способ управления памятью -- на усмотрение разработчика), нет раздельной компиляции (хотя скорость компиляции довольно высокая), нет даже простейшего распределения регистров (стэк-машина). Сейчас, я сделал бы по-другому: я бы разделил компилятор и линкер -- пусть компилятор производит файлы специального формата, а линкер собирает из них исполняемый. Да и транслировать сразу в машинный код -- тоже плохое решение.0CodErr wrote:Существует ли возможность получать на выходе простой объектник(COFF или OMF — не важно)?
Собственно, я уже написал новый компилятор. Пока он компилирует только в байт-код виртуальной машины, но уже может компилировать сам себя. Теперь надо этот байт-код (он довольно простой) транслировать в x86, x86-64, возможно ARM, AVR32 (заодно научусь обращаться с микроконтроллерами) -- со временем сделаю.
Да, этот компилятор с закрытым кодом, только для Windows (и только exe) и он уже давно не развивается. В нём есть однопоточный сборщик мусора, раздельная компиляция, язык расширен динамическими массивами и специальным синтаксисом для импорта функций из внешних библиотек. При этом, там нет некоторых встроенных процедур: INC, DEC... Не реализован доступ к переменным промежуточного уровня (хотя я сомневаюсь, что это так уж важно). Качество кодогенерации еще хуже, чем у моего компилятора -- код на 10-20% медленнее и в 2-3 раза больше. Очень низкая скорость компиляции. Он реализует ревизию языка 2008. Мой компилятор -- 2011. Список ревизий:0CodErr wrote:Есть вот ещё какой-то Oberon-07 http://exaprog.com/eng/index.html http://exaprog.com/rus/index.html но он вроде другой, да?
https://sites.google.com/site/oberonsys ... tva-oberon
Разные ревизии очень похожи, но отличаются в мелких деталях, что делает их несовместимыми. Этот язык, как бы, для местного применения: пишется компилятор под конкретную железку и ПО под конкретный компилятор.