Здравствуйте, vdimas, Вы писали:
V>>>Если пользуешь Си, то для оперирования объявленными статическими данными (структурами, массивами) необходим CRT. ЕМ>>Как именно он необходим для оперирования ими?
V>Двухфакторная инициализация — статическая и динамическая.
CRT не является безусловно необходимым для этого. Он нужен, когда невозможно загрузить инициализированные данные вместе с программой в готовом виде. Если платформа позволяет это делать (с помощью стандартного загрузчика, отображения памяти, или еще как), CRT не требуется.
V>Гарвардская модель удобна для встраиваемых решений, т.к. программы сидят в ПЗУ на кристалле.
Так ПЗУ не является необходимым элементом гарвардской архитектуры. В общем случае эта архитектура никак не мешает загрузке в память заранее подготовленных данных.
И даже в тех случаях, когда такой возможности нет, именно CRT не требуется. Для одномодульной программы компилятор может складывать код инициализации в заранее известную функцию, которую нужно будет явно вызвать до использования статических переменных. Для многомодульных программ это делается складыванием кода в секции, для обработки которых также могла бы генерироваться служебная функция, вызываемая явно. По сути, это часть CRT, но поднятая чуть выше, вроде явной инициализации вместо умолчания.