OberonCore
https://forum.oberoncore.ru/

Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x86
https://forum.oberoncore.ru/viewtopic.php?f=30&t=6344
Страница 1 из 17

Автор:  Oleg N. Cher [ Среда, 23 Январь, 2019 20:58 ]
Заголовок сообщения:  Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x86

Видимо, пора уже создать такую тему. Итак, встречайте: Ofront+. Форк транслятора Йозефа Темпла Ofront на базе портабельного компилятора OP2 (ETH Oberon). Текущий статус проекта: стабильный, фичи допиливаются по мере необходимости. В планах есть много задумок: добавить, кроме Оберона и Оберона-2, ещё Компонентный Паскаль, Оберон-07 и экспериментальный диалект Оберон-3. Также я думал про совместимость с языковыми расширениями GPCP. Кое-что из задуманного уже реализовано. Если возьмёте транслятор в работу, будем активно развивать его вместе с вашими потребностями. Я на это очень надеюсь. Мне несколько обидно, что неразвивающийся Vishap/voc котируется по рейтингам выше, чем более прогрессивный и мощный Ofront+. Давайте менять эту ситуацию!

Отличия Ofront+ от Ofront/voc:

    • Новый экспериментальный диалект Oberon-3 (на основе Oberon-07, Component Pascal и др.).
    • Выводится имя модуля/позиция для любой ошибки времени выполнения, HALT и ASSERT.
    • Системные типы: INT8, INT16, INT32, INT64, ADRINT.
    • Можно выполнять арифметические операции над типом BYTE (Oberon-3 и Component Pascal).
    • Неограниченная длина строковых литералов (в Ofront/voc макс. 255 символов).
    • Поддержан SYSTEM.VAL(INTEGER, {80000000H..0FFFFFFFFH}) при описании констант 32-битного типа (иначе они считаются 64-битными).
    • ASH and SYSTEM.LSH возвращают результат типа INTEGER для аргумента типа <= INTEGER и результат типа LONGINT для аргумента типа LONGINT. Это позволяет использовать сдвиги без оверхеда в виде сдвига 64-битного значения.
    • Поддержан символ «_» в идентификаторах.
    • Ofront+ для Windows работает под Windows 9x. Ofront+ для Linux поддерживает 32 и 64-битные системы.
    • Поддержка исходников в кодировке UTF-8 (с или без BOM) с EOL как 0DX (система Oberon), 0AX (UNIX/Linux) и 0DX+0AX (Windows).
    • BITS(), ORD(set), LEN(string$), str1 := str2$, IN-параметры процедур (Component Pascal).
    • ORD(bool), ORD(set) поддерживается в Oberon-3.
    • Системные флаги: VAR [nil], ARRAY/RECORD [untagged], POINTER [untagged] как в BlackBox.
    • Расширенные возможности для описания привязок к чужеродным библиотекам, системный флаг [stdcall].
    • В одном проекте можно использовать модули, написанные на языках Oberon, Oberon-2, Component Pascal и Oberon-3.
    • Испытано с GCC/MinGW, Intel C++, SDCC и даже Borland Turbo C.

Я начал этот проект чтобы иметь настоящий инструмент, а не игрушку. И сейчас это довольно хороший способ получить решение для архитектур ARM/x64 на Обероне-2 или Компонентном Паскале, хотя и подмножестве. Меня Ofront+ уже более чем устраивает в том виде, в котором он есть, но также я оказываю поддержку своим пользователям при решении возникающих проблем. Так что буду рад сотрудничеству.

Ссылки:


Автор:  Борис Рюмшин [ Среда, 23 Январь, 2019 23:47 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

А CPFront вы не смотрели?

Автор:  Oleg N. Cher [ Четверг, 24 Январь, 2019 00:31 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Смотрели. Об этом было в моём докладе на Дне Оберона-2018. Он не готов для 64 бит и ядра нет. Но конструктивно он близок к Ofront, так что я хочу их срастить по мере сил, со временем.

Автор:  Trurl [ Четверг, 24 Январь, 2019 17:11 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

А описание Oberon-3 есть?

Автор:  Борис Рюмшин [ Четверг, 24 Январь, 2019 17:14 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Oleg N. Cher писал(а):
Он не готов для 64 бит и ядра нет. Но конструктивно он близок к Ofront, так что я хочу их срастить по мере сил, со временем.

А что подразумевается под готовностью для 64 бит?

Конструктивно то понятно, это Ofront какой-то промежуточной версии переделанный под КП.

Автор:  Trurl [ Четверг, 24 Январь, 2019 18:21 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Да, как им пользоваться-то?

Автор:  Oleg N. Cher [ Четверг, 24 Январь, 2019 18:33 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Trurl писал(а):
А описание Oberon-3 есть?
Готовится.

Борис Рюмшин писал(а):
А что подразумевается под готовностью для 64 бит?
Как минимум, неиспользование везде, где можно, INTEGER в качестве адреса. А в идеале - наличие адресного системного типа. Да, те модули, которые являются CPfront'ом, можно переделать под 64 бита, но поскольку всё увязано на BlackBox, то кто будет переделывать фронт-энд? Потом нужно будет ввести несколько наборов символьных файлов для разных разрядностей. Не всё так тривиально, как Вы думаете, Борис.

Trurl писал(а):
Да, как им пользоваться-то?
Там есть QuickStart.txt и примеры программ со скриптами их для сборки. Если что-то конкретно непонятно, дайте знать)

Автор:  Trurl [ Четверг, 24 Январь, 2019 18:59 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Как скомпилировать хелловорд?
Он не находит символьных файлов, да их и нету. Как сделать, чтобы были?

Автор:  Oleg N. Cher [ Четверг, 24 Январь, 2019 19:25 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Есть они. Цитирую QuickStart.txt:
Цитата:
1. Если работа происходит в нескольких папках, то важно чтобы транслятор мог найти символьные файлы *.sym, необходимые для трансляции, т.к. в них хранится информация об интерфейсах импортируемых модулей. Поэтому задайте переменную OBERON, содержащую пути для поиска:

UNIX / Linux 32:

export OBERON=.:../Lib/Sym:../Sym

UNIX / Linux 64:

export OBERON=.:../Lib/Sym64:../Sym64

Windows 32:

SET OBERON=%CD%;%CD%\..\Lib\Sym;%CD%\..\Sym

Windows 64:

SET OBERON=%CD%;%CD%\..\Lib\Sym64;%CD%\..\Sym64

Переменная окружения OBERON задаёт список путей, по которым будет вестись поиск рабочих файлов. Пути могут быть и абсолютными, и относительными. Без этой переменной транслятор будет искать файлы только в текущем каталоге. То есть, процесс трансляции выглядит как-то так:
Код:
@ECHO OFF
SET PATH=..\Bin;%PATH%
SET OBERON=%CD%;%CD%\..\Lib\Sym

ofront+ -mC -48 BlitBmp.Mod
IF errorlevel 1 PAUSE

Автор:  Trurl [ Четверг, 24 Январь, 2019 20:45 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Поиск по "*.sym" не дает результатов. Может они и есть, но где?

Автор:  Oleg N. Cher [ Четверг, 24 Январь, 2019 21:14 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

А-а, я понял отчего у Вас нет *.sym, Trurl! Раньше они присутствовали в репозитории, но потом Иван Денисов заметил, что нет смысла хранить там файлы, которые легко сгенерировать. Я подумал — что-то в этом есть. И убрал.

Просто запустите Lib/Bin/o2c для 32-битной системы и Lib/Bin/o2c64 для 64-битной.

Автор:  Trurl [ Четверг, 24 Январь, 2019 22:16 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Ура! Заработало! (^◔ᴥ◔^)

Автор:  Борис Рюмшин [ Пятница, 25 Январь, 2019 08:23 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Oleg N. Cher писал(а):
Не всё так тривиально, как Вы думаете, Борис.

А я и не думаю, что всё тривиально.

Автор:  Comdiv [ Суббота, 26 Январь, 2019 22:36 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Планируется ли добавить автоматическую сборку исполняемых файлов помимо генерации кода на C?

Автор:  Oleg N. Cher [ Пятница, 08 Февраль, 2019 20:14 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

В Ofront+ добавлены арифметические операции DIV0 и REM0. Благодарю ComDiv'а за помощь.
Подробнее здесь: https://github.com/Oleg-N-Cher/OfrontPlus/issues/55

Comdiv писал(а):
Планируется ли добавить автоматическую сборку исполняемых файлов помимо генерации кода на C?
Я думал о чём-то подобном. Такая прослойка между транслятором Оберона и компилятором Си, которая будет переводить свои опции командной строки в gcc'шные. Серьёзно? Кому-то такое ещё надо? В voc проделана эта работа, и поэтому voc хорош? Не очень понятно, зачем изобретать свои опции и транслировать одни опции в другие. К тому же, это жёсткая завязка на определённый компилятор Си. Плюс понадобится привязка к структуре проекта, расположению библиотек и т.д. (что мне не нравится в voc).

Вопрос к пользователям Ofront+. Чего больше всего не хватает в трансляторе? На какое направление его развития нужно сделать упор в первую очередь?

Автор:  SovietPony [ Воскресенье, 10 Февраль, 2019 11:56 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Я уже много раз об этом говорил: хотелось бы готовые *.c для жму/пинусов вместо бинарей.
Не обязательно их ложить в репы, пусть транслируется автоматически и выкладываются куда-нибдь на фтп или в релизы на шитхабе (это наверняка делается как-нибдь автоматизировано) вместе со свежими бинарями.

Автор:  Oleg N. Cher [ Понедельник, 11 Февраль, 2019 03:09 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Навёл порядок с шестнадцатеричными литералами в разных Оберон-диалектах.


SovietPony писал(а):
хотелось бы готовые *.c для жму/пинусов вместо бинарей.
Ну хорошо. Мне это не упёрлось, но раз человек просит, почему бы нет.

Здесь кто-нибудь мог бы мне помочь с настройкой Travis CI или AppVeyor?


Автор:  Oleg N. Cher [ Вторник, 12 Февраль, 2019 15:22 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Улучшена поддержка Oberon-07 (опция -7): добавлены встроенные функции FLOOR и FLT.


Автор:  GameHunter [ Среда, 13 Февраль, 2019 19:08 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

Кто-нибудь использовал Ofront+ для компиляции в DLL?
Я линкую модкли в DLL (mingw-w64), в принципе работает, но почему-то
не запускается секция инициализации модулей.

А финализации модулей в Ofront+ нет?

Автор:  Oleg N. Cher [ Четверг, 14 Февраль, 2019 01:21 ]
Заголовок сообщения:  Re: Ofront+: транслятор Оберон-языков в Си для ARM, x64 и x8

GameHunter писал(а):
Кто-нибудь использовал Ofront+ для компиляции в DLL?
Я использовал.

GameHunter писал(а):
Я линкую модкли в DLL (mingw-w64), в принципе работает, но почему-то не запускается секция инициализации модулей.
При загрузке DLL и не должно само инициализироваться. Механизма типа DllMain там не предусмотрено. Инициализацию делает вызов Module__init() через макрос __IMPORT(Module__init). Ключик -d при создании DLL юзаете?

GameHunter писал(а):
А финализации модулей в Ofront+ нет?
Пока нет. Сделаем CLOSE как в КП.

Страница 1 из 17 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/