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

. Но я с удовольствием выложу его где-нибудь. Пока что, на всех компах сразу работает, кроме одного - старого, на котором ассемблер в 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'ом и выдавать Си-код?