ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
90856 Топик полностью
ReAl (06.06.2007 13:03, просмотров: 1) ответил Axl на Спасибо. с компилированным стеком уже разобрался, просто не знал что так называется:). Хотелось бы избавиться от него, хотя бы частично
Компилированный стек (aka оверлеи данных) использует для аргументов и локальных переменных ровно столько же места, сколько может быть максимально занято на "настоящем" стеке. Там ведь линкером строится дерево вызовов и области памяти для разных функций перекрываются, если они не вызывают друг друга. Т.е. избавляться от него с целью рассвободить память нет смысла. Надо смотреть в других местах - уровни оптимизации, модели памяти, ... Ручками вытолкать часть переменных и массивы в idata и xdata, компилятору под автоматику оставить только data, включить глобальную регистровую оптимизацию. У меня всё нормально было с кейлами от 5.не_помню до 6.20 - регистры использовались и для передачи параметров (только если не лезут в регистры - тогда в оверелейных областях data), и для локальных переменных. А глобальная регистровая оптимизация єту картину ещё улучшала (вот чего не хватает AVR-ским компиляторам - есть куча РОН, но не всегда они используются эффективно).