Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Nov 17, 2019 5:01 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 112 posts ]  Go to page Previous 1 2 3 4 58 Next
Author Message
PostPosted: Sun Jan 05, 2014 6:14 pm 
Offline

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


Top
   
PostPosted: Mon Jan 06, 2014 6:46 am 
Offline

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


Top
   
PostPosted: Thu Jul 30, 2015 10:29 pm 
Offline

Joined: Tue Jun 11, 2013 3:29 pm
Posts: 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


Top
   
PostPosted: Fri Jan 29, 2016 5:51 pm 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
Я скоро открою исходный код FB2 Reader'а, а пока выкладываю компилятор, которым его можно будет собрать.

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


Attachments:
oberon07.zip [134.41 KiB]
Downloaded 214 times
Top
   
PostPosted: Fri Jan 29, 2016 7:02 pm 
Offline

Joined: Wed May 18, 2005 7:27 pm
Posts: 1001
http://zx.oberon2.ru/forum/viewtopic.php?f=59&t=140


Top
   
PostPosted: Sat Oct 15, 2016 11:25 pm 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
Обновления.

Компилятор:

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

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

Библиотека:

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

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

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


Attachments:
oberon07.zip [167.42 KiB]
Downloaded 187 times
Top
   
PostPosted: Sun Oct 16, 2016 1:46 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Отлично, выстраивается иерархия базовых языков, живых в данный момент
asm c-- c oberon c++

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


Top
   
PostPosted: Fri Dec 23, 2016 3:39 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5066
Привет,

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

Code:
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% увеличил скорость обработки внеся изменение вроде такого, Оберон не знаю, код немного приблезительный...

Code:
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;

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


Top
   
PostPosted: Fri Dec 23, 2016 4:34 am 
Offline

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


Top
   
PostPosted: Fri Dec 23, 2016 7:08 pm 
Offline
Designer
User avatar

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

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


Top
   
PostPosted: Sat Dec 24, 2016 1:21 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
akron1 wrote:
.. Сейчас я постепенно переделываю кодогенератор компилятора, это позволит поднять скорость программ не менее чем в 2 раза, но возни там много...

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

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


Top
   
PostPosted: Sat Dec 24, 2016 7:34 am 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
Leency wrote:
Ах вот оно как, я-то думаю почему у тебя работает быстрее моего. Хорошо придумано.

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

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


Top
   
PostPosted: Mon Feb 19, 2018 8:49 pm 
Offline
User avatar

Joined: Sun May 10, 2009 7:56 pm
Posts: 98
Stopwatch - консольный таймер.

Вопрос: при вызове функций, можно как-то опускать ненужные параметры чтобы не заводить лишние переменные или нужно писать функцию заново?

На примере: DateTime.Now(Year, Month, Day, hour, min, sec);

Ещё странно - имена переменных регистрозависимы. Так и было задумано?


Attachments:
stopwatch.zip [6.35 KiB]
Downloaded 97 times
Top
   
PostPosted: Mon Feb 19, 2018 10:41 pm 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
1) Нет, опускать параметры нельзя -- язык почти игрушечный, синтаксис предельно упрощен.
2) Так и должно быть, язык регистрозависимый.


Top
   
PostPosted: Mon Apr 02, 2018 6:15 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Существует ли возможность получать на выходе простой объектник(COFF или OMF — не важно)?
В справке написано только
Quote:
"obj" - KolibriOS DLL
А чистый RAW(plain binary)?
Было бы полезно, мне кажется.

Есть вот ещё какой-то Oberon-07 http://exaprog.com/eng/index.html http://exaprog.com/rus/index.html но он вроде другой, да?


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 112 posts ]  Go to page Previous 1 2 3 4 58 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited