ARV писал(а): что касается инициализации - она происходит до входа в функцию main() - на этапе инициализации. если интересно - могу подробно рассказать (я это дело изучил весьма основательно)
Я и прошу от вас этого - показать асм код (в том листинге или (прошивке дизасм) что сделал WinAVR) который вписывает нули в адреса переменных.
ARV писал(а): но гораздо проще запустить отладчик в AVR Studio и посмотреть в Watch - все переменные будут обнулены, если явно не проинициализированы.
Ваааааааааааще ОТЖИХХХХХ ! Корки отмачиваете не шуточные !
Откудаж в СИМУЛЯТОРЕ возьметься мусор в ячейках памяти ? Симулятор РОДИТ его чтоль ?
Вы полагаете что если код написать на CVAVR то в студии не будет нулей в переменных ? В листинге CVAVR есть специальный макрос очищающий всю оперативн память - не знаю задействует ли он его в каждой проге или нет.
В реальном процессоре "мусор" в ячейках памяти может остаться после ресета -
не ужели НЕ ЯСНО ?Если в симуляторе есть фича сохранять содержимое памяти при РЕСЕТЕ - то мусор КОНЕЧНО будет если до РЕСЕТа в эти ячейки вписать что-то не нулевое и если нет ЯВНОГО АСМ кода очищающего эти ячейки при старте программы.
ARV писал(а): tych, неужели вы и в самом деле думаете, что исполнение программы, написанной на Си начинается именно с main()?!
Так оно и есть на самом деле - программа на Си начинает выполняться с мэйн обычно.
ARV писал(а): а где тогда по-вашему стек устанавливается, вы же в main() не пишите инициализацию SP...
Там где компилятор "ЗАТОЧЕНЫЙ" ПОД АРХИТЕКТУРУ процессора накомпилит -
видно в ЛИСТИНГЕ ЯВНО !ARV писал(а): выходит, есть еще какой-то код, предваряющий main()
Как вы догадались ? Наверно в листинге .lss - кторый я приложил выше - увидели ?ARV писал(а): вот там и происходит инициализация переменных, в том числе и обнуление по умолчанию.)
ПОКАЖИТЕ ГДЕ ???? Я ж выложил вам АСМ код
в архиве и написал что
я не спец по АСМ-у и попросил вам показать где нули вписываются !
ARV писал(а): а присваивание проинициализированным переменным их значений вы нашли в своем листинге?

Естественно НЕТ !
Опять дурачком прикидываетесь ???
WinAVR имдиЁт чтоль ? Он чтоль не видит что
переменная не считвается в коде до записи в нее, нафигаж он будет писать в нее то что не требуется - ОПТИМИЗАЦИЯ то включена !
Вот если в проге добавить чтение из этой переменной, до записи в нее нового значения, то компилер ВЫНУЖДЕН будет вписать (запомнить) присвоеное ей при инициализации значение. Хотя если оптимизацию не выключить он может и схитрить - сразу вычислить значение результата в первое месте где в проге она появится.