Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Nov 17, 2019 6:58 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 112 posts ]  Go to page Previous 14 5 6 7 8
Author Message
PostPosted: Fri Dec 07, 2018 2:12 pm 
Offline

Joined: Sun Feb 04, 2007 2:07 pm
Posts: 178
Ещё один вопросец.
Вот у тебя в документации "Глобальные и локальные переменные инициализируются нулями"
А как быть с теми переменными которые должны инициализироваться определёнными значениями, а не нулём?
Планируется ли как-то решать эту проблему? Это конечно если я всё правильно понимаю.

Quote:
Разве что, такое устройство языка приводит к некоторому увеличению размера кода и снижению эффективности

Comdiv делал тест накладных расходов при структурном программировании. Вывод у него такой, что не нужно жертвовать структурностью ради возможной копеечной прибавки к производительности.

Кстати, ты сменил лицензию на BSD? Почему?


Top
   
PostPosted: Fri Dec 07, 2018 3:08 pm 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
Maxis wrote:
Ещё один вопросец.
Вот у тебя в документации "Глобальные и локальные переменные инициализируются нулями"
А как быть с теми переменными которые должны инициализироваться определёнными значениями, а не нулём?
Планируется ли как-то решать эту проблему? Это конечно если я всё правильно понимаю.


Пока никак не планирую. Для инициализации переменных, просто пишется специальная процедура и вызывается из секции инициализации модуля. Секция инициализации в любом случае, выполняется до первого использования модуля (исключение -- низкоуровневые модули RTL, API, KOSAPI). Конечно, есть неудобство при инициализации структурных переменных. Но я бы не сказал, что мне это сильно мешает. Если же структурных данных очень много, то их можно загрузить из файла.

Maxis wrote:
Quote:
Разве что, такое устройство языка приводит к некоторому увеличению размера кода и снижению эффективности

Comdiv делал тест накладных расходов при структурном программировании. Вывод у него такой, что не нужно жертвовать структурностью ради возможной копеечной прибавки к производительности.


Я с этим не спорю. Да и зачем бороться за копеечный выигрыш, тогда, когда вовсю используются интерпретируемые языки. Еще подумал, что единственная точка возврата может упростить подстановку процедур вместо вызовов, если я буду делать такую оптимизацию.

Maxis wrote:
Кстати, ты сменил лицензию на BSD? Почему?

Я в этих лицензиях несильно разбирался. Считается, что GPL затрудняет коммерческое использование кода. Тут, конечно, речь не идет о таком использовании, но пусть будет BSD, чтобы не было недовольных (недовольство по поводу GPL в моем коде мне высказывали неоднократно).


Top
   
PostPosted: Fri Dec 07, 2018 8:25 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
akron1 wrote:
... Аварийная остановка программы, в случае непредусмотренного значения выражения в CASE, часто сигнализирует о серьезной ошибке и оказывает немалую помощь при разработке программы в блокноте, в условиях отсутствия отладчика. Пока у меня еще остаются сомнения в правильности такого решения Вирта. Всё же, бывают ситуации, когда все возможные значения трудно предусмотреть. Особенно в процессе разработки, когда реализована обработка только части вариантов из нескольких десятков или сотен и надо проверить работоспособность того, что уже сделано, тогда приходится ставить ELSE на пока еще не обработанные варианты.
...
Однако, трап при отсутствии нужного варианта не предусмотрен в лангрепорте по О7.

А прервать цикл можно присвоением итератору цикла, ибо
Quote:
The for statement
FOR v := beg TO end BY inc DO S END
is, if inc > 0, equivalent to
v := beg;
WHILE v <= end DO S; v := v + inc END


Top
   
PostPosted: Sat Dec 08, 2018 9:20 am 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
Siemargl wrote:
Однако, трап при отсутствии нужного варианта не предусмотрен в лангрепорте по О7.

Это так, но многие реализации считают иначе. В принципе, можно сделать трап отключаемым.
Siemargl wrote:
А прервать цикл можно присвоением итератору цикла, ибо
Quote:
The for statement
FOR v := beg TO end BY inc DO S END
is, if inc > 0, equivalent to
v := beg;
WHILE v <= end DO S; v := v + inc END

Здесь явная недоработка. Как минимум, счетчик надо было сделать доступным только для чтения. А еще лучше, сделать его при этом доступным только изнутри цикла.


Top
   
PostPosted: Mon Mar 11, 2019 12:28 pm 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
Ну что ж, проект KolibriOS, ожидаемо, завершился, но я всё же заменил старый компилятор в дистрибутиве на новый. Компилятор переехал на x86_64, но поддержка x86_32 сохраняется: 64-битная версия производит как 64-, так и 32-битный код; 32-битная -- только 32-битный. Качество кодогенерации примерно соответствует другим неоптимизирующим компиляторам. Появилась базовая поддержка Linux (без dll), текстовые сообщения об ошибках компиляции и др. Поддерживаются исполняемые файлы для Windows32/64, Linux32/64 и KolibriOS. В принципе, можно сделать поддержку Menuet64, но нет мотивации. В будущем, наверно, попробую добавить кодогенерацию для чего-либо отличного от x86.


Top
   
PostPosted: Sun Oct 06, 2019 11:13 pm 
Offline

Joined: Thu Mar 09, 2017 4:10 pm
Posts: 9
Как компилировать с Oberon 07под КолибриОС?


Top
   
PostPosted: Mon Oct 07, 2019 3:01 pm 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 142
Компилировать просто, так же как и для Windows или Linux, только параметр командной строки отличается:

Если компилировать из самой KolibriOS, то надо взять последнюю ночную сборку, запустить приложение RUN (главное меню -> запуск программы) и набрать:
путь к компилятору, путь к главному модулю, параметр "kos", параметр "-out" и имя выходного файла:

/cd2/1/kolibrios/develop/oberon07/Compiler.kex samples/HW_con.ob07 kos -out /temp0/1/HW_con

Аналогично, если из Windows (64-бит) (компилятор взять с гитхаба):
C:\oberon07\Compiler.exe samples\test.ob07 kos -out samples\test

Из Linux (64-бит) (компилятор взять с гитхаба) набрать в терминале:
/home/live/oberon07/Compiler samples/test.ob07 kos -out samples/test

Если программа компилируется для других операционных систем, то вместо "kos", указывается "console", "console64", "elfexe", "elfexe64" и т. д. В документации к компилятору всё написано, какие надо задать параметры командной строки. Единственное что, 32-битная версия компилятора не может компилировать 64-битные программы. Но если для KolibriOS, то это не критично, а в репозитории находятся только 64-битные бинарники компилятора для Windows и Linux, которые могут компилировать также и 32-битные программы.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 112 posts ]  Go to page Previous 14 5 6 7 8

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


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:  
Powered by phpBB® Forum Software © phpBB Limited