Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс окт 22, 2017 5:32 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 42 сообщения ]  На страницу Пред. 1 2 3
Автор Сообщение
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Вс янв 05, 2014 6:14 pm 
Не в сети

Зарегистрирован: Ср май 18, 2005 7:27 pm
Сообщения: 1001
Ссылка в первом сообщении http://www.inf.ethz.ch/personal/wirth/A ... Report.pdf не работает, но архив.орг снова выручает http://web.archive.org/web/201311031146 ... Report.pdf


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Пн янв 06, 2014 6:46 am 
Не в сети

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
Это самая свежая ревизия языка - 01.10.2013, и она, возможно, будет еще уточняться. Моя поделка реализует ревизию 22.9.2011.
http://web.archive.org/web/201110250952 ... Report.pdf


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Чт июл 30, 2015 10:29 pm 
Не в сети

Зарегистрирован: Вт июн 11, 2013 3:29 pm
Сообщения: 24
I want to shared two little games. I made these game to learn kolibrios api and Oberon07 programming lenguage. They are a TicTacToe clone, and a maze game. They are here: http://board.kolibrios.org/viewtopic.php?f=41&t=3096


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Пт янв 29, 2016 5:51 pm 
Не в сети

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
Я скоро открою исходный код FB2 Reader'а, а пока выкладываю компилятор, которым его можно будет собрать.

- Небольшие изменения в SYSTEM.
- Разрешен экспорт структурных переменных (только для чтения).
- Сделано удаление "мертвых" процедур.
- Небольшие изменения в генерации *.obj (MS/COFF).
- Расширены и исправлены библиотеки для KolibriOS: добавлены модули для работы с доской отладки и диалогами ("Open" и "Color"), усовершенствованы процедуры загрузки динамических библиотек, сделан единый модуль для работы с файловой системой.
- Документация приведена в текстовый формат (CP866) и fb2.
- Удален текстовый редактор для Windows.
- Удалены библиотеки (кроме ран-тайма) и примеры для Windows и Linux, но сохраняется как возможность сборки программ для этих ОС, так и работоспособность компилятора в этих ОС.


Вложения:
oberon07.zip [134.41 КБ]
97 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Пт янв 29, 2016 7:02 pm 
Не в сети

Зарегистрирован: Ср май 18, 2005 7:27 pm
Сообщения: 1001
http://zx.oberon2.ru/forum/viewtopic.php?f=59&t=140


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Сб окт 15, 2016 11:25 pm 
Не в сети

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
Обновления.

Компилятор:

-вывод сообщений на консоль, вместо доски отладки
-текстовые сообщения об ошибках, вместо номеров ошибок (в дальнейшем их можно будет перевести на английский и сделать более информативными)
-шаблон elf встроен в компилятор

На этот раз более тщательно протестировал создаваемые obj-библиотеки, ошибок не обнаружил. Вопрос закрыт.

Библиотека:

Новые модули:
-RasterWorks -- обертка для RasterWorks.obj
-libimg -- обертка для libimg.obj
-kfonts -- работа с kf-шрифтами

Модуль Utils переименован в Args, всё равно там ничего не было, кроме разбора параметров. Интерфейс модуля Args сделан как в реализации Oxford Oberon-2.

Добавлены примеры использования RasterWorks, libimg, kfonts.


Вложения:
oberon07.zip [167.42 КБ]
67 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Вс окт 16, 2016 1:46 am 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 268
Отлично, выстраивается иерархия базовых языков, живых в данный момент
asm c-- c oberon c++

как менее поддерживаемые еще получаются forth, pascal, basic, lua, py


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Пт дек 23, 2016 3:39 am 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4221
Привет,

У тебя в файле kfonts.ob07 есть функция:

Код:
PROCEDURE smooth(VAR Font: TFont_desc; n, xsize, ysize: INTEGER);
VAR x, y: INTEGER;
BEGIN
  FOR y := 1 TO ysize - 1 DO
    FOR x := 1 TO xsize - 1 DO
      IF (getpix(Font, n, x, y, xsize) = 1X) & (getpix(Font, n, x - 1, y - 1, xsize) = 1X) &
    (getpix(Font, n, x - 1, y, xsize) = 0X) & (getpix(Font, n, x, y - 1, xsize) = 0X) THEN
   setpix(Font, n, x - 1, y, xsize, 2X);
   setpix(Font, n, x, y - 1, xsize, 2X)
      END;
      IF (getpix(Font, n, x, y, xsize) = 0X) & (getpix(Font, n, x - 1, y - 1, xsize) = 0X) &
    (getpix(Font, n, x - 1, y, xsize) = 1X) & (getpix(Font, n, x, y - 1, xsize) = 1X) THEN
   setpix(Font, n, x, y, xsize, 2X);
   setpix(Font, n, x - 1, y - 1, xsize, 2X)
      END
    END
  END
END smooth;

Я у себя в тестах существенно на 30-35% увеличил скорость обработки внеся изменение вроде такого, Оберон не знаю, код немного приблезительный...

Код:
PROCEDURE smooth(VAR Font: TFont_desc; n, xsize, ysize: INTEGER);
VAR x, y: INTEGER;
BEGIN
  FOR y := 1 TO ysize - 1 DO
    FOR x := 1 TO xsize - 1 DO
      IF (getpix(Font, n, x, y, xsize) = 1X)
            IF (getpix(Font, n, x - 1, y - 1, xsize) = 1X) &
            (getpix(Font, n, x - 1, y, xsize) = 0X) & (getpix(Font, n, x, y - 1, xsize) = 0X) THEN
            setpix(Font, n, x - 1, y, xsize, 2X);
            setpix(Font, n, x, y - 1, xsize, 2X)
            END;
      END;
      ELSE IF (getpix(Font, n, x - 1, y - 1, xsize) = 0X) &
    (getpix(Font, n, x - 1, y, xsize) = 1X) & (getpix(Font, n, x, y - 1, xsize) = 1X) THEN
   setpix(Font, n, x, y, xsize, 2X);
   setpix(Font, n, x - 1, y - 1, xsize, 2X)
      END
    END
  END
END smooth;

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Пт дек 23, 2016 4:34 am 
Не в сети

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
Эта процедура выполняется только после загрузки файла шрифта для подготовки глифов. При выводе текста она не используется и ее производительность не критична. Вывод глифов в графический буфер выполняется попиксельно с проверкой границ буфера для каждого пикселя, т. е. производится отсечение текста. И всё-таки, несмотря на тот код, который выдает компилятор и многочисленные проверки границ, производительность этой библиотеки можно признать удовлетворительной для большинства задач. Сейчас я постепенно переделываю кодогенератор компилятора, это позволит поднять скорость программ не менее чем в 2 раза, но возни там много...


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Пт дек 23, 2016 7:08 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4221
> Эта процедура выполняется только после загрузки файла шрифта для подготовки глифов. При выводе текста она не используется и ее производительность не критична.
Ах вот оно как, я-то думаю почему у тебя работает быстрее моего.
Хорошо придумано.

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Сб дек 24, 2016 1:21 am 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 268
akron1 писал(а):
.. Сейчас я постепенно переделываю кодогенератор компилятора, это позволит поднять скорость программ не менее чем в 2 раза, но возни там много...

Пиши подробности. Интересно.

Кстати, готовую статью бы на Хабр...


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Сб дек 24, 2016 7:34 am 
Не в сети

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
Leency писал(а):
Ах вот оно как, я-то думаю почему у тебя работает быстрее моего. Хорошо придумано.

А мне по-другому нельзя, постоянно приходится заботиться о сокращении вычислений.
Siemargl писал(а):
Пиши подробности. Интересно.

Там пока мало интересного. Основная идея в том, что компиляция разделяется на два этапа. Сначала исходный код транслируется в условный байт-код виртуальной машины (промежуточное представление), а потом байт-код можно транслировать в машинный. Это позволит для сохранения промежуточных значений выражений, по возможности, задействовать регистры вместо стэка; константы не загружать ни в стэк, ни в регистры, а встраивать непосредственно в машинные команды. И хотя это не имеет отношения к Колибри, но такой подход позволит сравнительно просто получить машинный код не только для x86, но и, например, для AMD64. Сейчас промежуточное представление сделано на ~50%, работы еще много, а свободного времени мало, поэтому работающий новый кодогенератор появится в лучшем случае весной, а то и летом.


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

Часовой пояс: UTC+03:00


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

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


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB