[uquote="afz",url="/forum/viewtopic.php?p=3442157#p3442157"]Тут идут исторические размышления на тему...
...
статические и глобальные (в смысле, определенные вне функций и видимые во всех функциях) - перед кучей, да? Ну, и malloc() выдаст память из кучи, да?[/uquote]
Бред полный. В инете полно всякого вздора, зачем его читать?
Куда, в какие секции, положить переменные, кучу и прочие части программы - определяет компилятор. А куда, в какие регионы памяти, затем располагать эти секции - определяет компоновщик. Компоновщику необходимую инфу о регионах памяти и размещениях секций по ним задаёт программист в файле конфигурации.
Никакие PDP и прочее старьё тут не при чём. Так же как нет никаких догм насчёт расположения кучи, стеков и пр.
Добавлено after 4 minutes 42 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3445078#p3445078"]логичным выглядит деление сплошного пространства ОЗУ между этими сущностями единственной границей. в этом случае положение границы задается одним размером - стека или кучи.[/uquote]
Видимо Вы никогда не использовали РТОС. Там одним стеком дело не ограничивается.
Одна, две или три границы - нет никаких догм, как удобно для данного проекта так и следует память разделять. Тем более что в подавляющем большинстве embeded-проектов куча вообще не нужна.
Память полезно делить по её физическим особенностям: скорости, сохранению содержимого в sleep, доступности DMA, доступности bitband и пр.
Добавлено after 4 minutes 39 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3445063#p3445063"]и все-таки, я так и не увидел ответа на теоретический вопрос: зачем вручную задавать размер и местоположение стека, если наиболее оптимальным выглядить отдавать под него все, что осталось после выделения кучи и статических переменных (ну и под код, исполняемый из ОЗУ - это я не в курсе, как правильно называется)?[/uquote]
Зачем под какой-то массив в программе отдавать не всю память, а вручную задавать размер? ответите на этот вопрос?
А чем стек отличается от любого другого массива в программе?
Добавлено after 2 minutes 18 seconds:
[uquote="dosikus",url="/forum/viewtopic.php?p=3443255#p3443255"]
Мурик, нормальная практика использовать для этого кучу.[/uquote]
Нормальная практика в embedded - не использовать кучу. От слова "вообще".
Добавлено after 4 minutes 6 seconds:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3442961#p3442961"]Конечно прогая на ассме легко посчитать нужный размер стэка, как это сделать на ЯВУ, кроме интуиции я не знаю. Можно попробовать конечно в каких-то глубоких подпрограммах считать SP[/uquote]
Начать нужно с изучения доки на компилятор. Ибо многие из оных вполне себе способны сообщать размер стека используемый функцией в листинге.
Другое дело, что использование косвенных вызовов функций создаёт трудности.