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

 
 
> Количество локальных переменных в GCC для AVR
EugeNNe
сообщение Jan 15 2010, 06:11
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



Какое количество локальных переменных возможно объявить в функции GCC AVR?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
IgorKossak
сообщение Jan 15 2010, 07:45
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Любое в пределах объёма стека, поскольку локальные переменные создаются на стеке при вызове функции и удаляются при выходе из неё.
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 16 2010, 10:03
Сообщение #3


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата(IgorKossak @ Jan 15 2010, 12:45) *
Любое в пределах объёма стека, поскольку локальные переменные создаются на стеке при вызове функции и удаляются при выходе из неё.

не совсем. нужно учитывать, если есть, рекурсию + память на кадрирование стека + память на адрес возврата и сохранение регистров. вобщем сходу не определишь какого размера нужно выставить стек. только экспериментально.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 16 2010, 18:53
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(srm @ Jan 16 2010, 14:03) *
не совсем. нужно учитывать, если есть, рекурсию

Клуб самоубийц - это из другого литературного произведения smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 16 2010, 19:19
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

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

Так уж "только экспериментально" smile.gif. Вообще-то компиляторы обычно способны предоставить информацию о глубине использования стека функциями.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 17 2010, 13:11
Сообщение #6


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



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

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

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

т.е. есть такие компиляторы, которые автоматически вычисляют максимальную глубину стека и устанавливают опции в программе? то, что во время отладки зачастую валится стек с соответствующими сообщениями эмулятора - это я знаю, а вот чтобы компилятор на этапе сборки исходников вычислял необходимый размер стека - впервые слышу.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 17 2010, 13:23
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 17 2010, 15:11
Сообщение #8


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



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

многозадачность? кстати, тоже нужно будет реализовать в своём проекте. как лучше производить преключение контекстов потоков? по прерыванию от таймера?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 17 2010, 15:16
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

Вообще-то контексты переключаются по СОБЫТИЯМ. Таймер, только одно из возможных событий, которое может ожидать, или вообще не использовать процесс.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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