> Эксперты уже докопались до правды.)) так то мне тоже интересен в первую очередь код.Как по мне они могут быть хоть тайным обществом марсиан если выдают на гора что-то интересное, какое мне дело до их биологических особенностей?
> "Загрузчик" работает на машине разработчика, как составная часть велосипедного "линкера".
При этом очевидный минус что мы залетаем на кодинг и майнтенанс.
> Я так понимаю, что у скриптов линкера есть некие ограничения. Не
> очень хочется в них упереться, потратив неделю времени на изучение. Потому
> может оказаться проще разобраться с форматом и самому всё написать.
Я ни с какими ограничениями такого плана не сталкивался. В GCC есть экстеншн позволяющий attribute положить ту функцию или данные в конкретный section. Так что вектора идут в ".vec" например. И дальше мы знаем что его надо первым.
В линкерскрипте описывается порядок секций и их логические/физические адреса и что в них класть. Там все довольно круто и гибко. И даже можно на основе этого переменные provide'ить из линкера, это startup коду надо. Ну как, когда я подымаю стандартную сишную арену в МК, я должен знать например 1) куда я хочу INITIALIZED DATA поместить 2) сколько их там вообще. А изначально они в секции в флеше с другим физическим адресом. То же и BSS касается.
А если это не делать... оно как будет си, но довольно странным. Никогда не видел переменные переживающие RESET? К сожалению это больше баг, т.к. в таком виде ресет не ведет к гарантированому деглюку системы.
> Имел ввиду, что там от начала загрузки исполняемого файла до запуска основного
> потока процесса проходит больше времени, чем линуксе. Если верить экспертам. Сам
> я пока не измерял как следует, но время инициализации libc.so не впечатлило.
У этой штуки свой libc для начала, как я понимаю. А glibc какой оптимизирован на скорость любой ценой. И кроме того в нормальной ситуации он в лине грузится и парсится 1 раз, потом RCU только небольшую дельту для разных процессов прихранивает. Это часть крутости и эффективности fork(). А тред отличается от процесса только объемом unshare()'нутого. Некий суперсет этого позволяет namespaces. Они идею из plan9 вроде содрали изначально.
> Как оказалось, не меньше, не каждый готов заплатить такую цену. Потому меня
> настораживают идеи всяких универсальностей.
По сравнению с электроном, где запуск хрома и V8? :)