Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 19 июн 2025, 11:31

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: О компиляторах
СообщениеДобавлено: 18 май 2016, 23:01 
Не в сети
Аватара пользователя

Сообщения: 15
Откуда: Рига, Латвийская ССР
Тут шла речь о FoxCompiler и о других проектах. Есть где-то более-менее полный перечень всех компиляторов Оберона? Мне в своё время очень помог вот этот список: http://zx.oberon.org/links.htm?Compilers и ещё на сайте OberonCore что-то было, но получается, что эти списки устарели? Основная польза в том, что там довольно сжато описаны главные преимущества и недостатки каждой системы, а также её статус (разрабатывается или заброшена) и открытость (есть ли исходники, какая лицензия).


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 18 май 2016, 23:04 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Артур, все Оберон-реализации, которые мы сочли интересными, перечислены на главной странице данного форума. Со ссылками. Если туда что-то не попало — давайте добавим.

Устаревание списков вещь в себе, т.к. многие реализации Оберона давно никем не поддерживаются.

А Вы посмотрели уже Ofront? :-) Спрашиваю потому, что чувствую в Вас традиционалиста, такого же, как я, которому не нужны Оберон-системы, а достаточно мультитаргета Windows/Linux.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: OO2C, Ofront
СообщениеДобавлено: 19 май 2016, 00:02 
Не в сети
Аватара пользователя

Сообщения: 15
Откуда: Рига, Латвийская ССР
Zorko писал(а):
kekc_leader писал(а):
Единственное, чем могу порадовать - я разобрался, как запускать OO2C из-под Виндоуса и практически сделал версию, которая работает «из коробки».
Это весьма интересно, Артур. Есть ли у проекта репозиторий или хотя бы страничка, где это всё добро можно скачать?
Да вот, нет ещё странички. Я как партизан, собрал себе «работающий» ZIP-файл с «OO2C + MinGW + Allegro4 + редактор FreeOberon + примеры» и нигде не выкладываю, шлю только ученикам, которых заставляю Оберон учить :lol: . Но я с удовольствием выложу его где-нибудь. Пока что, на всех компах сразу работает, кроме одного - старого, на котором ассемблер в GCC выдаёт какую-то ошибку, про которую в интернете пишут, что она относится к старым компам и начилась с определённой версии GCC (а найти или собрать старый MinGW под Виндоус у меня не получилось - слишком много файлов надо качать вручную). В этой сборке есть несколько проблем:
1) Она должна обязательно находится в папке C:\oberon - это из-за того, что при компиляции самого OO2C в него вшивается путь к XML-файлу с настройками (или что-то в этом роде, я уже не помню точно), я этот путь поменял на C:\oberon и оставил, хотя починить это, думаю, не сложно (хотя наскоком не получилось).
2) Даже если №1 починить, у OO2C для Виндоуса есть очень занимательная особенность - он думает, что работает под Линуксом, поэтому все пути он пишет без диска "C:" и с правильными дробями ("/"), но, как ни странно, CommandPrompt всё понимает - сам додумывает "C:" и меняет "/" на "\". GCC вроде думает, что он на Виндоусе. Чтобы всё это работало, компилировать сам компилятор приходится в очень тонкой «атмосфере» - нужно это делать из MinGW и в нём монтировать некоторые каталоги в определённые места... Я помню, что старался подробно расписывать процесс перекомпиляции, эта документация тоже в архиве.
3) Для работы OO2C надо добавить два пути к переменной окружения PATH (для этого в сборке есть два BAT-файла: для WindowsXP- и для Windows Vista+), OO2C обращается напрямую к "gcc", поэтому командный интерпретатор должен знать такую команду, иначе OO2C не сможет собрать EXE.
4) Сам процесс - что я менял в OO2C - нигде не описан, можно только diff'ом пройтись. Правда, я там совсем немного менял.
Не могу приложить файл к сообщению (он слишком большой), поэтому закачаю его на radioflot.com/oberon, сам редактор написан с использованием библиотеки Allegro4, но я его уже переписал под SDL2 (и при этом он не тормозит), так что следующая версия уже будет на SDL2.

Zorko писал(а):
...разобрался с Ofront... Научился собирать версию для командной строки Windows (без CygWin). Если это интересно, могу поделиться результатами.
Однозначно интересно! Буду ждать Ofront.
А пока я ждал ответа на сообщение, я узнал, что есть такая сборка Blackbox под названием Freenix, которая работает из консоли, компилирует исходники (на Компонентном Паскале) из обычных текстовых файлов и умеет собирать линуксовский исполняемый файл. До этого меня на форумах уверяли, что это невозможно и такого нигде нет. Вроде бы, почти то, что надо для моего FreeOberon, вот пробую прикрутить. Единственное, что Виндоусский аналог тоже нужен, но вроде этот Freenix и под Виндоусом создаёт EXE'шки, я ещё не разобрался до конца...

Zorko писал(а):
Со своей стороны обещаю попробовать связаться со Стюартом Гринхиллом (разработчиком утилиты H2O) и рассказать ему об этой ошибке. Но насколько получится привлечь его к исправлению — трудно сказать.
Было бы здорово, если бы авторы исправили ошибку или хотя бы намекнули, в каком месте её искать.

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

Zorko писал(а):
Но предполагаю, что до многих оптимизаций, реализованных в Delphi, Free Pascal и GCC (да даже в XDS) он очень серьёзно не дотягивает.
А разве «нативный» XDS оптимизирует не лучше, чем все вышеперечисленные компиляторы? Вроде, язык позволяет, в отличие от C. Или уже GCC ушёл вперёд?

Zorko писал(а):
Я имел в виду более сложные оптимизации: свёртка констант, раскрытие циклов, размещение переменных в регистрах и т.п.
Насчёт раскрытия циклов - да, не думаю, что у них это есть. А насколько это сильную оптимизацию это в среднем может дать?
Не знаю точно, но думаю, что размещение переменных в регистрах в Блэкбоксе реализовано. В книге Н. Вирта «Построение компиляторов» о том, как это сделать подробно рассказано. Более того, там целочисленные переменные изначально располагаются в регистрах, для этого есть глобальная переменная типа SET, в которой указано, какие регистры в данный момент заняты и пара функций типа «дайте свободный регистр» и «этот регистр больше не нужен». В общем, вроде, не так всё сложно. Правда, там используется выдуманный RISC-процессор, а не x486, который CISC (правильно?).

Zorko писал(а):
Если туда что-то не попало — давайте добавим.
Да, надо бы добавить, но я и сам других компиляторов не знаю, вот и спрашиваю товарищей, пусть расскажут.

Zorko писал(а):
А Вы посмотрели уже Ofront? :-) Спрашиваю потому, что чувствую в Вас традиционалиста, такого же, как я, которому не нужны Оберон-системы, а достаточно мультитаргета Windows/Linux.
Угадали, видимо я традиционалист. Не сказал бы, что мне не нужны Оберон-системы, наоборот, хотелось бы, чтобы вместо Виндоусов, Линуксов и Макинтошев у всех на компьютерах стояли бы Обероны... Был бы другой мир совсем. Но так как я хочу на Обероне писать что-то интересное и распространять это, а также хочу сам Оберон распространять в народе, то в первую очередь меня интересует именно не Оберон-система в себе, а хороший компилятор Оберона под Линукс и Виндоус. Т. е. не "Блэкбокс" хочется видеть, а "FreePascal".
Нет, Ofront ещё не посмотрел, не знаю, с чего начать. Я вообще на Линуксе сижу, Виндоус есть на виртуалке. Кстати, XDev и Ofront же должны работать из Блэкбокса под Wine'ом и выдавать Си-код?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: OO2C, Ofront
СообщениеДобавлено: 19 май 2016, 00:52 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
kekc_leader писал(а):
Да вот, нет ещё странички. Я как партизан, собрал себе «работающий» ZIP-файл с «OO2C + MinGW + Allegro4 + редактор FreeOberon + примеры» и нигде не выкладываю, шлю только ученикам, которых заставляю Оберон учить :lol: . Но я с удовольствием выложу его где-нибудь.
Благодарю, скачал. Не помню, какое тут на форуме ограничение на макс. размер файла, но можно подправить.

kekc_leader писал(а):
Пока что, на всех компах сразу работает, кроме одного - старого, на котором ассемблер в GCC выдаёт какую-то ошибку, про которую в интернете пишут, что она относится к старым компам и начилась с определённой версии GCC (а найти или собрать старый MinGW под Виндоус у меня не получилось - слишком много файлов надо качать вручную).
Я, правда, не пойму, зачем старый MinGW. Не лучше ли взять посвежее? А собирать не нужно, MinGW разных версий есть в инете, кажется, даже на оф. сайте.

kekc_leader писал(а):
Чтобы всё это работало, компилировать сам компилятор приходится в очень тонкой «атмосфере» - нужно это делать из MinGW и в нём монтировать некоторые каталоги в определённые места...
Порадую Вас тем, что Ofront пересобирается даже дубиной. :-) Под линухом это простое sudo make, под виндой же (в XDev/WinDev) написал соотв. батники (для вызова GCC) и собираю одной кнопкой (F12).

kekc_leader писал(а):
Zorko писал(а):
...разобрался с Ofront... Научился собирать версию для командной строки Windows (без CygWin). Если это интересно, могу поделиться результатами.
Однозначно интересно! Буду ждать Ofront.
Ждать придётся только версию для командной строки Windows. :-) Для линуха Ofront вполне себе готов:

(и не ведитесь на "shareware" в урле, он freeware, под лицензией BSD).

    • Ofront for Windows (там же).
Это версия, работающая как подсистема BlackBox. Возможно, Вам стоит начать с неё, чтобы оценить те нововведения, которые появились в OfrontPlus и XDev.

kekc_leader писал(а):
А пока я ждал ответа на сообщение, я узнал, что есть такая сборка Blackbox под названием Freenix, которая работает из консоли, компилирует исходники (на Компонентном Паскале) из обычных текстовых файлов и умеет собирать линуксовский исполняемый файл. До этого меня на форумах уверяли, что это невозможно и такого нигде нет.
Посмотрите ещё Component Pascal Compiler for command-line — кроссплатформенный (Win32/Linux32) компилятор языка Компонентный Паскаль (модифицированная версия компилятора BlackBox, адаптированная для использования из командной строки ОС).

kekc_leader писал(а):
Вроде бы, почти то, что надо для моего FreeOberon, вот пробую прикрутить. Единственное, что Виндоусский аналог тоже нужен, но вроде этот Freenix и под Виндоусом создаёт EXE'шки, я ещё не разобрался до конца...
Должен создавать. Подсистема Dev работает и в винде, и в линухе. Но я бы советовал прикрутить к FreeOberon именно Ofront (вместо OO2C), и потом вместе, подпитываясь идеями с XDev, voc и других реализаций, развивать его. Я ещё много фич планирую добавить, в т.ч. из КП/GPCP и других Оберонов.

kekc_leader писал(а):
А разве «нативный» XDS оптимизирует не лучше, чем все вышеперечисленные компиляторы? Вроде, язык позволяет, в отличие от C. Или уже GCC ушёл вперёд?
Сложно сказать так наобум, надо тестировать, притом вдумчиво. Но GCC вперёд шагает, а XDS вроде как стоит на месте. Хотя я где-то читал, что XDS круче код даёт. Хотя может это и байка. А вот exe'шники он даёт и правда большие, я в XDev генерю маленькие, даже со сборкой мусора (ofront.exe ~ 126 кб несжатый UPX'ом).

kekc_leader писал(а):
А насколько это сильную оптимизацию это в среднем может дать?
Опять же, не знаю. Я просто утешаюсь тем, что в GCC оптимизация круче, чем у всех реализаций Оберона. ;-)

kekc_leader писал(а):
Не знаю точно, но думаю, что размещение переменных в регистрах в Блэкбоксе реализовано.
Оно там реализовано, но только отчасти. Например, для передачи параметров используется один регистр и стек. Но это очень сложная область, регистров в 80x86 мало и для всего не хватает, поэтому аллокатор должен быть очень умным, ползать по коду и смотреть, где ещё понадобится значение. Всё это крайне сложно.

kekc_leader писал(а):
Но так как я хочу на Обероне писать что-то интересное и распространять это, а также хочу сам Оберон распространять в народе, то в первую очередь меня интересует именно не Оберон-система в себе, а хороший компилятор Оберона под Линукс и Виндоус. Т. е. не "Блэкбокс" хочется видеть, а "FreePascal".
Аналогично. Мне бы очень хотелось такого компилятора. А уж сколько библиотек для FPC есть, так это ой. %)

kekc_leader писал(а):
Нет, Ofront ещё не посмотрел, не знаю, с чего начать. Я вообще на Линуксе сижу, Виндоус есть на виртуалке. Кстати, XDev и Ofront же должны работать из Блэкбокса под Wine'ом и выдавать Си-код?
В принципе, Вы уже с ним знакомы (он прекрасно обитает себе в voc). XDev, по идее, должен бы работать в Wine, но почему-то не совсем работает (батники для компиляции не вызываются, и я с этим не разобрался). Под Freenix тоже наверное несложно адаптировать. Просто я под виндой в основном сижу...


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: OO2C, Ofront
СообщениеДобавлено: 19 май 2016, 14:45 
Не в сети
Аватара пользователя

Сообщения: 15
Откуда: Рига, Латвийская ССР
Zorko писал(а):
Я, правда, не пойму, зачем старый MinGW. Не лучше ли взять посвежее?
Так ведь новый MinGW не работает на этом старом компе, хоть убей. GCC выдаёт для этого старого процессора не те инструкции, а MinGW'шный ассемблер ругается потом.

Zorko писал(а):
Ждать придётся только версию для командной строки Windows. :-) Для линуха Ofront вполне себе готов:
Отлично! Спасибо за ссылки, буду разбираться.

Zorko писал(а):
Component Pascal Compiler for command-line — кроссплатформенный (Win32/Linux32) компилятор языка Компонентный Паскаль (модифицированная версия компилятора BlackBox, адаптированная для использования из командной строки ОС).
Тоже смотрел недавно, это очень похоже на Freenix, только в CPCC есть один большой минус - «executable format of ELF is not supported yet». То есть *.so можно собрать и сделать маленькую сишную программку, которая его подключает (я это проделывал), но от so-файла никак не избавиться, lib*.a-файл нельзя создать и т. д.

Zorko писал(а):
Должен создавать. Подсистема Dev работает и в винде, и в линухе. Но я бы советовал прикрутить к FreeOberon именно Ofront (вместо OO2C), и потом вместе, подпитываясь идеями с XDev, voc и других реализаций, развивать его. Я ещё много фич планирую добавить, в т.ч. из КП/GPCP и других Оберонов.
Идея хорошая, только жалко с собой тащить GCC. И компиляция заметно (хоть и не страшно) медленнее. А какой функционал планируется добавить? Имеются в виду такие штуки, как ANYREC и ANYPTR, NEW, ABSTRACT и т. д.?

S.Atan писал(а):
При установке могут возникать проблемы, жесткий диск лучше отформатировать в какой нибудь FAT, вообщем если заинтересуетесь я постараюсь по шагам описать весь процесс!
У меня тут как раз есть старый стационарный компьютер. Опишите, пожалуйста, как на него поставить A2. А мультизагрузку не сложно сделать, чтоб был A2 и Линукс?

S.Atan писал(а):
Ну ... а по виндовым компиляторам всегда рад Вам помочь. Я так думаю ни один (даже закрытые!!!) не прошел мимо моих глаз!!! :D
Да вы практически незаменимый человек! Кстати, вопрос: какой компилятор Оберона лучше всего (элегантнее, красивее, понятнее) написан? Какие ещё книги, кроме «Построение компиляторов» Н. Вирта посоветуете? «Устройство ОС и компилятора» (тоже Вирта) и «Алгоритмы и структуры данных» читал.

S.Atan писал(а):
Выкладывайте прямо сюда!
Уже выложил. radioflot.com/oberon (надеюсь, что если ссылка устареет, файл всё равно можно будет найти на сайте).


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

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


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

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


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club