| OSDev http://osdev.su/ |
|
| QSinit http://osdev.su/viewtopic.php?f=4&t=808 |
Страница 6 из 6 |
| Автор: | dixie [ 25 сен 2024, 10:32 ] |
| Заголовок сообщения: | Re: QSinit |
Ну, тут под всем подписаться можно, копипаста - это страшно Куча сторонних библиотек это тоже страшно, как раз такая, полностью своя, заточенная под все системы - самый разумный вариант, поскольку поведение будет гарантированно одинаково на всех компиляторах и платформах. Собстно, куда более простой аналог такого рантайма есть и у меня, с другой направленностью, но вполне себе подручный. Писалось давно, как раз, чтобы избежать проблем с совместимостью с тем или этим. Что-то вроде 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 Ну если оно с дискеты до сих пор способно грузиться Вообще, хорошая тема, заби/ытая напрочь абы-как-кодерами - соотношение функциональности к размеру и используемым ресурсам. |
|
| Автор: | Yoda [ 25 сен 2024, 22:55 ] |
| Заголовок сообщения: | Re: QSinit |
SII писал(а): А как в этом чудо-компиляторе с поддержкой стандартов? А то скоро уже Це++26 появится... Изначально делалось под C++14. Но поскольку основные отличия стандартов касаются той части, над которой ещё не работали, — парсер, — то нет проблем его делать под последнюю версию. К сожалению, работа над компилятором официально приостановлена в связи с тем, что сосредоточились на "доходном" проекте, прибыль с которого как раз и планируется пустить на компилятор, поэтому сейчас работаю над ним в режиме "в свободное время". А библиотека постоянно чем-нибудь пополняется. |
|
| Автор: | SII [ 25 сен 2024, 23:55 ] |
| Заголовок сообщения: | Re: QSinit |
Ну, в последующих частях прилично расширили вещи, связанные с шаблонами. Кроме того, в Це++20 добавили модули и сопрограммы, а это требует весьма прилично дорабатывать компилятор (модули, кажется, только мелкомягкие и довели до достаточно работоспособного состояния; во всяком случае, в ARMCLANG'е нормально работать они не желают, а разбираться ленивственно). Остальные изменения, кажется, не требуют слишком уж сложных доработок в собственно компиляторе (библиотеки не в счёт). Сопрограммы я, хтати, присобачил себе в мою библиотеку ввода-вывода -- как раз для удобного использования асинхронщины (вместо традиционных подпрограмм обратного вызова или громоздких машин состояний на switch, вызываемых в главном цикле и продвигающихся по мере завершения операций). Нарвался на баг в компиляторе, но вылечил обновлением версии KEIL'а. |
|
| Автор: | dixie [ 16 окт 2025, 17:56 ] |
| Заголовок сообщения: | Re: QSinit |
Ну вот и ещё год Из заметных добавлений за это время только некий клон NC (или, скорее, фара). Это логичное продолжение темы "удобности аварийного бэкапа", работает с именами в юникоде, умеет все относительно базовые фичи. Сильно лень было начинать его писать, но дружелюбность использования, в итоге, выросла на порядок Учитывая, что уже паре человек пообещал, что 666-й ревижн будет посвящён r/o драйверу NTFS (сейчас 663), результат (надеюсь) будет вполне себе актуален. Сделать аварийную dual-mode GPT флешку, которая будет грузиться и в EFI и в BIOS с соответствующими версиями - несложно. Ну и забэкапить из неё с NTFS на какой-ньть exFAT, когда чинить винду некогда - идея примерно такова. С JFS/HPFS это уже работает и учитывая какчество IBM-ерского кода для JFS случалось быть полезным (например, для бэкапа каталога, при заходе в который нативный драйвер трапал систему |
|
| Автор: | phantom-84 [ 04 ноя 2025, 20:11 ] |
| Заголовок сообщения: | Re: QSinit |
Лайк. Что-то описание уже в портянку превратилось. Я про страничку /qs/ на вашем IP/моем домене. Может, структурировать? |
|
| Автор: | dixie [ 04 ноя 2025, 22:40 ] |
| Заголовок сообщения: | Re: QSinit |
Я даже не уверен, что это описание - просто нечто, обновлённое в честь 13-тилетия (2.5 года назад С тех пор, как минимум - работа с файлами целиком перетащена в юникод и добавлен некий "файлкоммандер", так, что картиночки опять просят апдейта Там вполне себе внятный хелп внутри, это, пожалуй, наиболее актуальный источник информации. Ну и для запуска BIOS версии можно просто сгенерить некий fixed size VHD и смонтировать его в VBox (tool\instimg.cmd). В целом, это такой себе конструктор/утиль (играючись запускает ipxe.pxe или ntldr и даже образ IBM ROM Basic от PC XT, но последнее работает только в VirtualPC |
|
| Автор: | dixie [ 13 мар 2026, 16:42 ] |
| Заголовок сообщения: | Re: QSinit |
Fri,13 (хорошо, что их много в этом году Обещанный код чтения NTFS. Ребята, конечно, переборщили. Чтобы поставить dirty bit или сменить метку тома - надо целиком перебрать файл $Volume ... Заметно, что хотели сделать индексирование по любому аттрибуту, не только по имени - но кому оно нафиг, в конце концов, пригодилось? Это сродни файлсетам в JFS - разные пространства имён в одном разделе - Круто, да ... но кому это нужно? Но оно есть - и реально переусложняет код. Вообще, эта фигня имела место где-то в районе w2k+/-10, сужу даже по себе ... Городил какие-то эпические многофункциональные конструкции, глядя на которые сейчас - "да, конечно, красиво - но зачем?" Можно "читать:стримы", компрессия (обычная), sparse files ... Если хочется поковыряться в NTFS - есть src\usrapps\ntfstest в исходном коде - оно собирается ваткомом под win32/os2 и дампит всякое - MFT, INDX ... это, собстно, код чтения до его переноса в QSINIT. Ну и к вопросу о соотношении объёма кода и функциональности - скромный модуль в 40k вмещает (r/o, конечно) код для HPFS, ISO9660, JFS и NTFS |
|
| Автор: | SII [ 13 мар 2026, 16:48 ] |
| Заголовок сообщения: | Re: QSinit |
Помнится, в Вислу, когда она была ещё в проекте (Лонгхорн, кажись, тады обзывалась), вообще собирались вместо обычной ФС впендюрить СУБД А нормального текстового описания НТФС нету? |
|
| Автор: | dixie [ 13 мар 2026, 20:56 ] |
| Заголовок сообщения: | Re: QSinit |
Не знаю - может и есть Я использовал какое-то древнее, которое у себя нашёл - от линуксового драйвера NTFS, кажется ... Ну и - лучший подсказчик - работающий код. Не груб конечно - там без травм для изучающего не обойдётся, но тот же линуксовый драйвер, который писать умеет или код из NTLDR от NT 4.0, который r/o, т.е. заведомо проще - и явно написан теми же людьми, что и сам NTFS. |
|
| Страница 6 из 6 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |
|