Re[8]: Самый низкоуровневый язык, ага
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 28.09.23 13:49
Оценка:
Здравствуйте, vdimas, Вы писали:

V>>>Если пользуешь Си, то для оперирования объявленными статическими данными (структурами, массивами) необходим CRT.

ЕМ>>Как именно он необходим для оперирования ими?

V>Двухфакторная инициализация — статическая и динамическая.


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

V>Гарвардская модель удобна для встраиваемых решений, т.к. программы сидят в ПЗУ на кристалле.


Так ПЗУ не является необходимым элементом гарвардской архитектуры. В общем случае эта архитектура никак не мешает загрузке в память заранее подготовленных данных.

И даже в тех случаях, когда такой возможности нет, именно CRT не требуется. Для одномодульной программы компилятор может складывать код инициализации в заранее известную функцию, которую нужно будет явно вызвать до использования статических переменных. Для многомодульных программ это делается складыванием кода в секции, для обработки которых также могла бы генерироваться служебная функция, вызываемая явно. По сути, это часть CRT, но поднятая чуть выше, вроде явной инициализации вместо умолчания.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.