ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
95264
Evgeny_CD (26.07.2007 00:47, просмотров: 7505)
Особо извращенная экономия памяти. Интересно, так кто-нибудь делает? Есть проц, у которого SRAM на шине. (NIOS-II). Для кода и данных. В начальный момент времени они инициализирован некими данными, затем туда можно писать как в ОЗУ. При старте ОСи и прикладных задач есть ненулевое количество кода, который исполняется один раз. Инициализация всякая, настройка. После выполения этот код лежит мертвым грузом. А можно ли сделать так? Каждый кусок такого кода - это функция void init_func (void). Линкеру говорится, что все такие функции надо стащить в одно место. При старте идет goto &init_func (ну или как красивше, но суть та же), после инициализации идет doto &main_finc. Сам блок памяти отмаплен в адресном пространетсве так, чтобы он был продолжением кучи и стека. На момент иницализации этот блок как бы входит в память стека будущих процессов, но поскольку процессор еще нет, блоку инициализации ничто не угрожает. Не знаю, насколько это эффективно, но, думаю, несколько сотен байт так можно сэкономить. Настроить все это гиморно, но, в принципе, можно написать скрипт: * откомпилировали , слинковали с установками от балды * подсчитали размеры нашего инита, вычислили все смещения * пересобрали заново с правильными установками. Интересно, так кто-нибудь делает?