OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 09:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 328 ]  На страницу 1, 2, 3, 4, 5 ... 17  След.
Автор Сообщение
СообщениеДобавлено: Среда, 23 Январь, 2019 20:58 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
Видимо, пора уже создать такую тему. Итак, встречайте: 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 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
А CPFront вы не смотрели?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 00:31 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
Смотрели. Об этом было в моём докладе на Дне Оберона-2018. Он не готов для 64 бит и ядра нет. Но конструктивно он близок к Ofront, так что я хочу их срастить по мере сил, со временем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 17:11 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
А описание Oberon-3 есть?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 17:14 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Oleg N. Cher писал(а):
Он не готов для 64 бит и ядра нет. Но конструктивно он близок к Ofront, так что я хочу их срастить по мере сил, со временем.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 18:21 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Да, как им пользоваться-то?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 18:33 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
Trurl писал(а):
А описание Oberon-3 есть?
Готовится.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 18:59 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Как скомпилировать хелловорд?
Он не находит символьных файлов, да их и нету. Как сделать, чтобы были?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 19:25 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
Есть они. Цитирую 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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 20:45 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Поиск по "*.sym" не дает результатов. Может они и есть, но где?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 21:14 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
А-а, я понял отчего у Вас нет *.sym, Trurl! Раньше они присутствовали в репозитории, но потом Иван Денисов заметил, что нет смысла хранить там файлы, которые легко сгенерировать. Я подумал — что-то в этом есть. И убрал.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Январь, 2019 22:16 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Ура! Заработало! (^◔ᴥ◔^)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 25 Январь, 2019 08:23 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Oleg N. Cher писал(а):
Не всё так тривиально, как Вы думаете, Борис.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 26 Январь, 2019 22:36 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Планируется ли добавить автоматическую сборку исполняемых файлов помимо генерации кода на C?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Февраль, 2019 20:14 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
В Ofront+ добавлены арифметические операции DIV0 и REM0. Благодарю ComDiv'а за помощь.
Подробнее здесь: https://github.com/Oleg-N-Cher/OfrontPlus/issues/55

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Февраль, 2019 11:56 
Аватара пользователя

Зарегистрирован: Воскресенье, 09 Декабрь, 2018 15:14
Сообщения: 113
Откуда: Equestria
Я уже много раз об этом говорил: хотелось бы готовые *.c для жму/пинусов вместо бинарей.
Не обязательно их ложить в репы, пусть транслируется автоматически и выкладываются куда-нибдь на фтп или в релизы на шитхабе (это наверняка делается как-нибдь автоматизировано) вместе со свежими бинарями.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Февраль, 2019 03:09 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
Навёл порядок с шестнадцатеричными литералами в разных Оберон-диалектах.


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

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



Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 12 Февраль, 2019 15:22 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
Улучшена поддержка Oberon-07 (опция -7): добавлены встроенные функции FLOOR и FLT.



Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 13 Февраль, 2019 19:08 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Кто-нибудь использовал Ofront+ для компиляции в DLL?
Я линкую модкли в DLL (mingw-w64), в принципе работает, но почему-то
не запускается секция инициализации модулей.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Февраль, 2019 01:21 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 518
Откуда: Украина, Днепропетровская обл.
GameHunter писал(а):
Кто-нибудь использовал Ofront+ для компиляции в DLL?
Я использовал.

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 328 ]  На страницу 1, 2, 3, 4, 5 ... 17  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB