Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пн окт 23, 2017 10:48 am

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




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

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
Leency писал(а):
И всё же немного стрёмно, что исходник может вот так затерется если не имеет расширения.

Да, наверное вы правы. Надо сделать чтобы компилятор обязательно требовал расширение "ob07" для главного модуля.

Leency писал(а):
>> Можете кто-то написать на форум разработчика, чтобы добавил поддержку относительных путей для компилятора?
Что насчёт этого?


А как это должно выглядеть для пользователя? Компилятор должен брать полный путь из файла настроек, а в командной строке указывается относительный путь? Если можно объясните подробнее.

Еще одним ограничением компилятора в KolibriOS является невозможность освобождения динамической памяти и неэкономное ее выделение. Это связано с тем, что системные функции KolibriOS, в отличие от Windows, могут выделять/освобождать память только целыми страницами. Может есть какая-нибудь библиотека с функциями типа malloc/free чтобы не писать свой менеджер памяти?

P. S.
Я не специалист по KolibriOS, компиляторам, x86, и программированию вообще. Поэтому, извините, если я задаю глупые вопросы.


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Пн окт 28, 2013 9:39 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
akron1 писал(а):
Еще одним ограничением компилятора в KolibriOS является невозможность освобождения динамической памяти

WAT? O_o

Как это невозможно освободить? Есть подфункции 68 функции, которые позволяют как отдать ядру, так и предопределить размер выделенного блока с сохранением содержимого в неизменяемой части блока.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


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

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4221
Любая программа в Колибри начинается примерно вот так:
Код:
   use32
   org 0x0
   db 'MENUET01'   ; 8 byte id
   dd 0x01      ; header version
   dd START   ; start of code
   dd IM_END   ; size of image
   dd I_END   ; memory for app
   dd stack_area   ; esp
   dd I_Param   ; boot parameters
   dd path      ; path
Если вы писали поддержку Колибри, то по любому должны были видеть эти строки.
Допустим мы запустили из коммандной строки Колибри (SHELL) Оберон следующей строй:
Compiler /kolibrios/develop/Oberton-07/HW kos
В этом случае программа Compiler будет запущена и в её парамтрах будут указатели на строки:
I_Param = "/kolibrios/develop/Oberon-07/HW kos"
path = "/kolibrios/develop/Oberon-07/Oberon"
(путь к программе)
Выделить из path путь к программе и приклеить к нему путь к исходнику (если тот является относительным) уже не составит труда.
В моих программах есть такая функция:
Код:
:dword GetAbsolutePathFromRelative(dword relative_path) 
{
   char absolute_path[4096];
   if (ESBYTE[relative_path]=='/')
   {
      strcpy(#absolute_path, relative_path);
   }
   else
   {
      strcpy(#absolute_path, #program_path);
      absolute_path[strrchr(#absolute_path, '/')] = '\0';
      strcat(#absolute_path, relative_path);
   }
   return #absolute_path;
}

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


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

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4221
>> Еще одним ограничением компилятора в KolibriOS является невозможность освобождения динамической памяти и неэкономное ее выделение. Это связано с тем, что системные функции KolibriOS, в отличие от Windows, могут выделять/освобождать память только целыми страницами. Может есть какая-нибудь библиотека с функциями типа malloc/free чтобы не писать свой менеджер памяти?

Колибри выделяет память страницами по 4 Кб. Есть функции выделения, очистки и изменения размера кучи - для всего этого 68 функция, как писал Марио.
Если же это не подходит, например, нужно часто выделять блоки маленького размера - по 300 байт, например, то нужно писать свой менеджер памяти.

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


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

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
Mario_r4 писал(а):
Как это невозможно освободить? Есть подфункции 68 функции, которые позволяют как отдать ядру, так и предопределить размер выделенного блока с сохранением содержимого в неизменяемой части блока.

Подфункции 68.20, 68.12 и 68.13 выделяют и освобождают память целыми страницами. При выделении таким образом памяти для множества мелких записей (например связанный список) будет большой перерасход памяти. Например для сборки самого компилятора из-под Колибри потребуется более 200 Мб.
Leency писал(а):
Если же это не подходит, например, нужно часто выделять блоки маленького размера - по 300 байт, например, то нужно писать свой менеджер памяти.

Ну вот поэтому пока DISPOSE не работает, так как нужен менеджер памяти.

Leency, спасибо, посмотрю что можно сделать с относительными путями.


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Вт окт 29, 2013 2:12 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
akron1 писал(а):
Подфункции 68.20, 68.12 и 68.13 выделяют и освобождают память целыми страницами. При выделении таким образом памяти для множества мелких записей (например связанный список) будет большой перерасход памяти. Например для сборки самого компилятора из-под Колибри потребуется более 200 Мб.

Ну, так как уже сказал Кирилл - менеджер памяти приложения. Ядро и не обязано предоставлять таких сервисов.

А меня лично удивило само построение фразы, которое начиналось с "является невозможность освобождения динамической памяти", что является не верным утверждением. Выделение и освобождение есть, другой вопрос что для целей сабжевого компилятора они плохо подходят.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Вт окт 29, 2013 2:37 am 
Не в сети
Public Relations
Аватара пользователя

Зарегистрирован: Пн июн 07, 2010 12:01 pm
Сообщения: 1879
akron1 писал(а):
Здравствуйте, уважаемые участники форума. Я - автор сабжа. Если у вас есть какие-либо вопросы или предложения - можете спрашивать.
Добрый день и большое спасибо, что Вы зарегистрировались и написали на нашем форуме. Моё предложение заключается в том, чтобы, если разработка Oberon для KolibriOS будет продолжена, исходники выкладывались в нашем репозитории SVN (тогда любой участник нашего проекта сможет также участвовать в разработке Oberon, если захочет). В противном случае, изменения могут потеряться, могут появляться форки, неизвестно где взять самую последнюю версию, а это всё лишняя трата времени и сил.

re0ne писал(а):
Да, на форуме http://oberspace.dyndns.org/, где был впервые представлен проект, человек с ником Freeman (а такой ник есть и здесь, подозреваю, что это тот же человек) спросил:
Цитата:
А можно нескромный вопрос: поддержка ОС "Колибри" не планируется?
Автор сначала ответил, что поддержка не планируется, но потом сделал.

Теперь понятно. Просто я об этом форуме первый раз услышал сейчас. Freeman - наш, и насколько я знаю, любитель Delphi, имеющего с Oberon общего предка - Pascal, так что всё логично. Для истории - тема вот эта: http://oberspace.dyndns.org/index.php/topic,396.0.html
На всякий случай, выдержка из той темы:
akron1 писал(а):
Написал компилятор Oberon-07/11 для x86 Windows. Конечно, компилятор неоптимизирующий, создает безобразный (хотя и вполне рабочий) машинный код, кроме того, отсутствует сборщик мусора. Зато есть небольшая стандартная библиотека (консольный и файловый двоичный ввод-вывод, математические функции и некоторые другие). Также есть текстовый редактор с подсветкой синтаксиса, нумерацией строк и автокапсом (как в Astrobe), что практически снимает проблему прописных букв. К сожалению, производительность подсветки синтаксиса, особенно в сочетании с нумерацией строк оставляет желать лучшего, однако в большинстве случаев работать можно с комфортом. И еще: я не профессиональный программист, поэтому не претендую на разработку качественного продукта.
Geniepro писал(а):
Freeman писал(а):
А можно нескромный вопрос: поддержка ОС "Колибри" не планируется?
Так исходники же доступны -- можно просто так взять и допилить.
Как я понимаю, надо просто выкинуть формирование exe-файла и записывать в бинарном виде.
Или в Колибри есть какой-то свой формат исполнимых файлов? Вроде бы типа досовских com-файлов там?
Freeman писал(а):
На самом деле большинство языков там на уровне "один студент кое-как адаптировал компилятор и скомпилировал одну программу", как я понимаю. На деле сами разработчики пишут на FASM, GCC (под который есть несколько вариантов Libc и прочего) и C-- (Си-минус-минус -- местная экзотика). Еще есть Lua и Python, но программ на них не припоминаю.

Поддержка FPC делалась когда-то под одну конкретную версию, работа с другими версиями FPC не гарантировалась. Я попробовал в ней разобраться, но понял, что с наскока не получится.

Под самой "Колибри" запускается только FASM. Если ориентироваться на него, то родной компилятор под "Колибри" должен запускаться под ней самой и уметь генерировать mcall -- штатное соглашение о вызовах Menuet/"Колибри", чтобы системные функции импортировать без прокладок.


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

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
yogev_ezra писал(а):
Моё предложение заключается в том, чтобы, если разработка Oberon для KolibriOS будет продолжена, исходники выкладывались в нашем репозитории SVN (тогда любой участник нашего проекта сможет также участвовать в разработке Oberon, если захочет). В противном случае, изменения могут потеряться, могут появляться форки, неизвестно где взять самую последнюю версию, а это всё лишняя трата времени и сил.

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


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Чт дек 19, 2013 5:35 pm 
Не в сети

Зарегистрирован: Вс окт 27, 2013 8:13 pm
Сообщения: 83
Сделал поддержку генерации dll(*.obj), простейшие библиотеки, биндинг к console.obj, появилась возможность переиспользования динамической памяти (DISPOSE), поддержка относительных путей.
https://sites.google.com/site/oberon07compiler/versii


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

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

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


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Сб янв 04, 2014 12:49 am 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4221
Скомпилируйте, пожалуйста, кто-то версию для Колибри.

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


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

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


Вложения:
Compiler.rar [34.27 КБ]
99 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Сб янв 04, 2014 1:02 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4221
Спасибо. У языка есть логотип?

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


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

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


Вернуться к началу
 Заголовок сообщения: Re: Компилятор Oberon-07
СообщениеДобавлено: Сб янв 04, 2014 9:59 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
O7

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


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

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


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

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


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

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