ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
95440 Топик полностью
AlexandrY (27.07.2007 12:04, просмотров: 1) ответил Evgeny_CD на Особо извращенная экономия памяти. Интересно, так кто-нибудь делает?
В принципе проблема мелкая, и решения очевидные. Указываем линкеру, что код выполняется в одном месте, а хранится в другом. Но место выполнения при этом должно быть фиксированным. При некоторых реализациях осей стек выделяется из фиксированных массивов (для uCOS, например, так любят делать) и проблем разместить там код до инициализации задачи нет. Линкер сам вставит код который переместит код из FLASH в нужное место в RAM на старте программы. Нечто подобное использую в начальных загрузчиках, в них код не может выполняться из FLASH во время программирования, приходится переходить в RAM. Труднее когда стеки и heap-ы выделяються динамически. Здесь поможет возможность RealView делать позиционно независимый код. Перемещать код уже придется в ручную после выделения места в heap-е. Интересно, компилеры под CF могут делать позиционно независимый код? Ну и наконец, как выяснилось есть халявные elf-загрузчики объектного кода. Тож вариант, хотя и не факт получится ли здесь экономия чего либо.