реклама на сайте
подробности

 
 
> IAR EWB AVR переполнение стека
Drozd2
сообщение Jul 8 2011, 21:15
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 19-11-09
Пользователь №: 53 743



Как попросить этого товарища на этапе компиляции хотя бы предупреждать о возможном переполнении стека?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Jul 8 2011, 21:44
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Drozd2 @ Jul 9 2011, 01:15) *
Как попросить этого товарища на этапе компиляции хотя бы предупреждать о возможном переполнении стека?

Никак, компилятор этого не умеет. Тем более что это не просто сделать даже в ручную. Тут надо найти в программе место, где могут быть наиболее глубоко вложены друг в друга подпрограммы или функции. И тоже самое отдельно для кода в обработке прерываний, а потом сложить максимальные значения. Ведь прерывание может случиться в любой момент времени, но больше всего опасен случай, когда прерывание произошло в момент работы самой глубоко вложенной подпрограммы/функции, из-за чего поверх начали наладываться подпрограммы/функции, вызываемые из прерывания.

Плюс к тому неопределеность, когда вызываешь библиотечные функции - кто сосчитает, что там понаписано? Вот и компилятор тоже не знает, т.к. библиотеку он использует уже откомпилированную.

Для AVR придется считать не только стек возвратов (RSTACK), но и стек локальных переменных (CSTACK). Всё это считать довольно противно, а потому проще не считать sm.gif, а выделять под стеки ВСЮ свободную память. А если не хватит, то деваться всё равно некуда.
Go to the top of the page
 
+Quote Post



Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 03:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.0158 секунд с 7
ELECTRONIX ©2004-2016