OSDev

для всех
Текущее время: 21 дек 2024, 15:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 25 сен 2024, 10:32 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 98
Ну, тут под всем подписаться можно, копипаста - это страшно ;)

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

Собстно, куда более простой аналог такого рантайма есть и у меня, с другой направленностью, но вполне себе подручный. Писалось давно, как раз, чтобы избежать проблем с совместимостью с тем или этим. Что-то вроде map2sym лепится на нём за два часа и 300 строк кода.

Плюс, свой менеджер кучи, написанный тогда же, и по скорости равный malloc gcc/msvc/ibm vac, но со всяким дебужным обвесом. Когда-то, в одной конторе, любители тянуть готовый код даже "исследование" устроили, сравнивая с неким GNUтым аналогом, который хотели использовать. Аналог оказался медленнее. Ну, собстно, если профайлер показывает, что главные тормоза в точке, где заголовок блока затягивается в кэш процессора - что тут ещё ускорять? ;)

А там небольшое читерство - заголовок всегда выравнен на 16 байт, сам размером 16 байт и блоки всегда равняются на них же - в итоге оно хорошо ложится на линейку кэша самых разных процессоров ценой небольшого оверхеда памяти и закапывания глюков (выход за пределы блока на 1 байт уронит всё только с вероятностью 1/16 ;))

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

Собстно, тут в 500k умещена вполне себе OS (остальное опционально-сервисное)...
С процессами, тредами, фиберами, сигналами, мутексами и проч., кучей команд шелла (включая всякую экзотику типа AT, SETLOCAL, SUBST, PUSHD, итд).
Сложно упрекнуть в перерасходе ресурсов ;)

Модуль, где собран r/o код доступа к HPFS, JFS и ISO9660 - 23kb :) Юникод у всех, multi-extent файлы и joliet в ISO.
Ну если оно с дискеты до сих пор способно грузиться ;)

Вообще, хорошая тема, заби/ытая напрочь абы-как-кодерами - соотношение функциональности к размеру и используемым ресурсам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 25 сен 2024, 22:55 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 972
Откуда: Дагоба
SII писал(а):
А как в этом чудо-компиляторе с поддержкой стандартов? А то скоро уже Це++26 появится...

Изначально делалось под C++14. Но поскольку основные отличия стандартов касаются той части, над которой ещё не работали, — парсер, — то нет проблем его делать под последнюю версию.
К сожалению, работа над компилятором официально приостановлена в связи с тем, что сосредоточились на "доходном" проекте, прибыль с которого как раз и планируется пустить на компилятор, поэтому сейчас работаю над ним в режиме "в свободное время". А библиотека постоянно чем-нибудь пополняется.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 25 сен 2024, 23:55 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1426
Ну, в последующих частях прилично расширили вещи, связанные с шаблонами. Кроме того, в Це++20 добавили модули и сопрограммы, а это требует весьма прилично дорабатывать компилятор (модули, кажется, только мелкомягкие и довели до достаточно работоспособного состояния; во всяком случае, в ARMCLANG'е нормально работать они не желают, а разбираться ленивственно). Остальные изменения, кажется, не требуют слишком уж сложных доработок в собственно компиляторе (библиотеки не в счёт).

Сопрограммы я, хтати, присобачил себе в мою библиотеку ввода-вывода -- как раз для удобного использования асинхронщины (вместо традиционных подпрограмм обратного вызова или громоздких машин состояний на switch, вызываемых в главном цикле и продвигающихся по мере завершения операций). Нарвался на баг в компиляторе, но вылечил обновлением версии KEIL'а.


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

Часовой пояс: UTC + 3 часа


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

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


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

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