Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Количество локальных переменных в GCC для AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
EugeNNe
Какое количество локальных переменных возможно объявить в функции GCC AVR?
IgorKossak
Любое в пределах объёма стека, поскольку локальные переменные создаются на стеке при вызове функции и удаляются при выходе из неё.
srm
Цитата(IgorKossak @ Jan 15 2010, 12:45) *
Любое в пределах объёма стека, поскольку локальные переменные создаются на стеке при вызове функции и удаляются при выходе из неё.

не совсем. нужно учитывать, если есть, рекурсию + память на кадрирование стека + память на адрес возврата и сохранение регистров. вобщем сходу не определишь какого размера нужно выставить стек. только экспериментально.
_Pasha
Цитата(srm @ Jan 16 2010, 14:03) *
не совсем. нужно учитывать, если есть, рекурсию

Клуб самоубийц - это из другого литературного произведения smile.gif
zltigo
Цитата(_Pasha @ Jan 16 2010, 21:53) *
Клуб самоубийц - это из другого литературного произведения smile.gif

Хороший очень эффективный инструмент. Никакого самоубийства. Естественно, пользоваться с умом надо и ограничивать критическую глубину.
Цитата(srm @ Jan 16 2010, 13:03) *
вобщем сходу не определишь какого размера нужно выставить стек. только экспериментально.

Так уж "только экспериментально" smile.gif. Вообще-то компиляторы обычно способны предоставить информацию о глубине использования стека функциями.
srm
Цитата(_Pasha @ Jan 16 2010, 23:53) *
Клуб самоубийц - это из другого литературного произведения smile.gif

есть некоторые задачи, которые без рекурсии не решаются вообще.

Цитата(zltigo @ Jan 17 2010, 00:19) *
Так уж "только экспериментально" smile.gif. Вообще-то компиляторы обычно способны предоставить информацию о глубине использования стека функциями.

т.е. есть такие компиляторы, которые автоматически вычисляют максимальную глубину стека и устанавливают опции в программе? то, что во время отладки зачастую валится стек с соответствующими сообщениями эмулятора - это я знаю, а вот чтобы компилятор на этапе сборки исходников вычислял необходимый размер стека - впервые слышу.
zltigo
Цитата(srm @ Jan 17 2010, 16:11) *
т.е. есть такие компиляторы, которые автоматически вычисляют максимальную глубину стека и устанавливают опции в программе?

Пречитайте еще раз - "предоставить информацию....функциями". Бездумные мечты про "опции в программе" это вообще детский сад - у меня, например прямо сейчас в текущем проекте 12 стеков при этом один из них нулевой глубины, а два пересекаются - догадайтесь откуда и почему так. В Вашей "программе" (полагаю речь идет о каком-либо IDE) столько галочек есть smile.gif?
srm
Цитата(zltigo @ Jan 17 2010, 18:23) *
Пречитайте еще раз - "предоставить информацию....функциями". Бездумные мечты про "опции в программе" это вообще детский сад - у меня, например прямо сейчас в текущем проекте 12 стеков при этом один из них нулевой глубины, а два пересекаются - догадайтесь откуда и почему так. В Вашей "программе" (полагаю речь идет о каком-либо IDE) столько галочек есть smile.gif?

многозадачность? кстати, тоже нужно будет реализовать в своём проекте. как лучше производить преключение контекстов потоков? по прерыванию от таймера?
zltigo
Цитата(srm @ Jan 17 2010, 18:11) *
как лучше производить преключение контекстов потоков? по прерыванию от таймера?

Вообще-то контексты переключаются по СОБЫТИЯМ. Таймер, только одно из возможных событий, которое может ожидать, или вообще не использовать процесс.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.