OberonCore
https://forum.oberoncore.ru/

DevCompiler> зачем нужны символьные файлы (.osf)?
https://forum.oberoncore.ru/viewtopic.php?f=29&t=6418
Страница 1 из 1

Автор:  hothing [ Воскресенье, 28 Июль, 2019 18:50 ]
Заголовок сообщения:  DevCompiler> зачем нужны символьные файлы (.osf)?

Никак не пойму, а зачем в стандартном компиляторе КП объявления\описания символов вынесли в отдельный файл (.osf)?
Может так организовано кеширование (дабы заново не парсить каждый импортируемый модуль)?
Хорошо, пусть так. Но могли бы сохранить в одном файле и объявления и код. Почему не сделали?

Автор:  Иван Денисов [ Воскресенье, 28 Июль, 2019 20:17 ]
Заголовок сообщения:  Re: DevCompiler> зачем нужны символьные файлы (.osf)?

osf файл описывает интерфейсы (по аналогии с заголовочными файлами в Си), а ocf файл описывает их реализации в машинных кодах. Очень часто файл реализации меняется, а файл интерфейсов при этом остаётся неизменным. Есть модули, которые не содержат реализацию вовсе, например в подсистеме Win. Там только интерфейсы.
Компилятор при сборке новых модулей интенсивно использует только символьные файлы osf импортированных модулей, а файлы реализаций ocf не использует.

Автор:  Пётр Кушнир [ Понедельник, 29 Июль, 2019 08:53 ]
Заголовок сообщения:  Re: DevCompiler> зачем нужны символьные файлы (.osf)?

.osf это как бы регулирующий файл для выбора модели дистрибуции компонента. Без osf-файла компилятор не сможет сделать импорт модуля (исходник при этом вообще не нужен), а вот скомпилированные ранее импорты не нуждаются в osf-файле для загрузки в память и позднего связывания. Можно распространять с исходником, без исходника, с символами, без символов, чисто код.

Автор:  hothing [ Понедельник, 29 Июль, 2019 09:24 ]
Заголовок сообщения:  Re: DevCompiler> зачем нужны символьные файлы (.osf)?

Иван Денисов писал(а):
Очень часто файл реализации меняется, а файл интерфейсов при этом остаётся неизменным.
Символьный файл неизменен пока интерфейс неизменен.
Если сделать общий контейнер для символов и кода, то будет то же самое.

Иван Денисов писал(а):
Компилятор при сборке новых модулей интенсивно использует только символьные файлы osf импортированных модулей, а файлы реализаций ocf не использует.
Технически это простое кеширование.

Пётр Кушнир писал(а):
...
Действительно, для коммерческой модели использования такой механизм подходит. Не подумал, что изначально ББ был коммерческим продуктом.

Спасибо. Теперь картинка сложилась: такая реализация позволяет красиво решить и техническую и коммерческую проблемы.

Автор:  Trurl [ Понедельник, 29 Июль, 2019 23:37 ]
Заголовок сообщения:  Re: DevCompiler> зачем нужны символьные файлы (.osf)?

По-моему, это все придумывание обоснований постфактум. Традиция иметь отдельный символьный файл идет еще от модулы и первых версий оберона.

Автор:  Пётр Кушнир [ Вторник, 30 Июль, 2019 18:33 ]
Заголовок сообщения:  Re: DevCompiler> зачем нужны символьные файлы (.osf)?

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/