ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
1 мая
214881 Топик полностью
Связанные сообщения
Stack
Нормального решения тут НЕТ ВООБЩЕ. Правильный ответ -- весь свободный (как в оригинальном Unix -- стек растёт вниз, куча вверх)...2020-03-04
Вдогонку вспомнилось. Ещё в embedded следует с большой осторожностью относится ко всем рекурсивным алгоритмам. В частности -- к ...2019-02-06
fk0, легенда (08.10.2010 18:22, просмотров: 273) ответил Скрипач на По GNU toolchain: Есть ли способ проанализировать использование стека в программе Си?
Если есть рекурсивные функции -- невозможно. С указателями на функции тоже трудно, но кое-как hitech-c для pic18 справляется... Что потенциально можно сделать: 1) ну во-первых рантайм проверку указателя SP... в нормальных процессорах есть аппаратная проверка, а для AVR программы небольшие... можно и так разобраться. вообще вспоминается, то ли для avr-gcc, то ли для keil x51, то ли ещё где была опциональная софтовая проверка на переполнение стека (что тормозило и раздувало программу ибо проверяло в прологе каждой функции). 2) во-вторых использовать какую-либо программу строющую дерево вызова функций (static code analyzers). хоть самую примиривную, вроде cflow (или ftp://ftp.berlios.de/pub/calltree/README) -- если исключить рекурсивные функции (глубину рекурсии для них оценивать отдельно) и вызов по-указателям -- глубину вызовов оценить уже можно. Осталось самую малось -- ручками (офонареешь) посчитать сколько памяти на стеке нужно в каждой функции. Можно для всех функций взять некую большую чем среднюю константу, посчитать отдельно только для функций с большими локальными переменными (кстати поэтому -- нефиг, есть malloc). 3) есть специальные софты... http://www.cs.utah …edu/~regehr/stacktool/ не уверен, что рабочие.
[ZX]