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

 
 
> GCC C++ для AVR, общие вопросы
spongebob
сообщение Apr 23 2012, 10:21
Сообщение #1


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

Группа: Участник
Сообщений: 126
Регистрация: 14-11-10
Пользователь №: 60 879



Всем привет!

Подскажите, пожалуйста, каков механизм вызова функций в Си++?
Имеет ряд вложенных функций (работа с массивами), хочется посчитать какой максимальный объем памяти в стеке они потребуют (передача параметров + сами данные в функциях).
Можно как-нибудь "автоматизировать" процесс подсчета? Видимо, читать значение указателя стека в определенные моменты времени?
Все ли локальные переменные, объявляемые в функциях, создаются в стеке?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
spongebob
сообщение Apr 27 2012, 10:19
Сообщение #2


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

Группа: Участник
Сообщений: 126
Регистрация: 14-11-10
Пользователь №: 60 879



Вопросы по секциям.
Читаю http://www.nongnu.org/avr-libc/user-manual, но там как-то очень скупо все описано... прошу помочь разобраться.

Записи -Wl,--section-start=.data=0x802000 и -Wl,--section-start,.data=0x802000 эквивалентны?
Т. е., синтаксис указания начала расположения секций имеет несколько вариантов?

Как на самом деле выглядят секции .data, .bss, .noinit?

Как я понимаю, данные из .data копируются в определенный момент времени в ОЗУ, инициализируя переменные. Когда копируются и кем? Нашел нечто в описании секции .init4, но там сказано про контроллеры с ОЗУ > 64 кБ ПЗУ (а это почему?).
Для секции .bss аналогичной операцией является заполнение нулями. Когда?
А для чего нужна секция .noinit? Ведь есть же .data и .bss.

Правильно ли я понимаю, что все глобальные или статические переменные, которые инициализированы программистом попадают в .data, а неинициализированные глобальные и статические переменные попадают в .bss и инициализируются нулями (по стандарту Си)?
А что происходит с локальными инициализированными переменными? Они же создаются на стеке, кто их и когда инициализирует?

Зачем нужны .finiN, если мы в main() обычно делаем while(1) {};?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- spongebob   GCC C++ для AVR, общие вопросы   Apr 23 2012, 10:21
- - MrYuran   http://stackoverflow.com/questions/6387614...syste...   Apr 23 2012, 10:35
|- - spongebob   Цитатаhttp://gcc.gnu.org/onlinedocs/gnat_ugn_unw.....   Apr 23 2012, 11:35
|- - MrYuran   Цитата(spongebob @ Apr 23 2012, 15:35) Во...   Apr 23 2012, 11:59
- - spongebob   Цитатаavr-g++.exe -mmcu=atmega1280 -Wall -ffunctio...   Apr 23 2012, 17:02
|- - MrYuran   Цитата(spongebob @ Apr 23 2012, 21:02) Не...   Apr 24 2012, 09:20
- - spongebob   Вот еще интересная ссылочка: http://www.avrfreaks....   Apr 24 2012, 09:11
- - spongebob   Касательно вот этого еще вопросы есть: http://www....   Apr 24 2012, 10:32
- - ReAl   Даже если указывать __heap_start и __heap_end, но ...   Apr 24 2012, 12:33
- - spongebob   Фигня какая-то... поставил 2010 WinAVR, он тоже оп...   Apr 24 2012, 17:22
|- - Сергей Борщ   QUOTE (spongebob @ Apr 27 2012, 13:19) За...   Apr 27 2012, 11:09
|- - spongebob   Цитата(Сергей Борщ @ Apr 27 2012, 15:09) ...   Apr 27 2012, 14:59
- - spongebob   Стартап является универсальным для всех контроллер...   Apr 27 2012, 18:22
- - Сергей Борщ   QUOTE (spongebob @ Apr 27 2012, 17:59) По...   Apr 27 2012, 20:34


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

 


RSS Текстовая версия Сейчас: 19th August 2025 - 21:53
Рейтинг@Mail.ru


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