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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> WinAVR-20071221 и AVR Studio 4.13 SP2 Final, новые релизы программ
733259
сообщение Dec 24 2007, 18:49
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



А чем OS_main отличается от __attribute__((naked))? Всегда применяю для main и никаких warning-ов и лишнего кода.
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 24 2007, 21:39
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(733259 @ Dec 24 2007, 21:49) *
А чем OS_main отличается от __attribute__((naked))? Всегда применяю для main и никаких warning-ов и лишнего кода.


Дело в том что атрибут 'naked' выкидывает не только лишний но и нужный код.

Анатолий.
Go to the top of the page
 
+Quote Post
733259
сообщение Dec 25 2007, 04:29
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Цитата(aesok @ Dec 25 2007, 02:39) *
Дело в том что атрибут 'naked' выкидывает не только лишний но и нужный код.
Выкидывает, но только не в main - там пролог и эпилог не нужны.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 25 2007, 05:36
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(733259 @ Dec 25 2007, 07:29) *
Выкидывает, но только не в main - там пролог и эпилог не нужны.

Я вот тоже попробовал naked, и прошло нормально. Но в мэйне не должно быть локальных переменных.
Go to the top of the page
 
+Quote Post
733259
сообщение Dec 25 2007, 05:48
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Цитата
Я вот тоже попробовал naked, и прошло нормально. Но в мэйне не должно быть локальных переменных.
А можно подробнее? У меня постоянно в main локальные переменные, обычно static правда, хотя точно не уверен т.к.

int main() __attribute__((naked));
int main(){

у меня вооще везде, стереотип выработался.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 25 2007, 05:58
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(733259 @ Dec 25 2007, 08:48) *
А можно подробнее? У меня постоянно в main локальные переменные, обычно static правда, хотя точно не уверен т.к.

int main() __attribute__((naked));
int main(){

у меня вооще везде, стереотип выработался.

static - не локальная!! Это глобальная переменная с ограниченной областью видимости.
Go to the top of the page
 
+Quote Post
733259
сообщение Dec 25 2007, 06:13
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Цитата(Qwertty @ Dec 25 2007, 10:58) *
static - не локальная!! Это глобальная переменная с ограниченной областью видимости.
Это я знаю, какие траблы с локальными переменными main? Я не заметил никаких, вот и спрашиваю.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 25 2007, 06:18
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(733259 @ Dec 25 2007, 09:13) *
Это я знаю, какие траблы с локальными переменными main? Я не заметил никаких, вот и спрашиваю.

Так они в прологе создаются и инициализируются. А naked пролог выкидывает
Go to the top of the page
 
+Quote Post
733259
сообщение Dec 25 2007, 07:09
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Согласен, только чем отличается переменная static от локальной в main, ведь эта, локальная, всё равно всегда существует вместе с main.

ЗЫ: скачал, под wine работает безупречно. Не заметил разницы между naked и OS_main на примере, специально объявил uint16_t array[64] в main. Бинарник совпадает до байта.
К сожалению реальный код, как и в предыдущих версиях, больше чем у 3.3.6, 3660 байт против 3274 в одном из моих проектов. Жаль.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 25 2007, 09:39
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(733259 @ Dec 25 2007, 10:09) *
Согласен, только чем отличается переменная static от локальной в main, ведь эта, локальная, всё равно всегда существует вместе с main.

Различие в том, где она создается. Локальная - в прологе мэйна. Static - в секции bss, если не ошибаюсь.
Цитата(733259 @ Dec 25 2007, 10:09) *
ЗЫ: скачал, под wine работает безупречно. Не заметил разницы между naked и OS_main на примере, специально объявил uint16_t array[64] в main. Бинарник совпадает до байта.
К сожалению реальный код, как и в предыдущих версиях, больше чем у 3.3.6, 3660 байт против 3274 в одном из моих проектов. Жаль.

А массивы вроде локальными не бывают, они всегда static, даже если объявлены локальными. Это сразу видно по использованию ОЗУ, массив сразу увеличивает использованное ОЗУ, а простые локальные переменные не увеличивают.
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 10:04
Сообщение #26


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(733259 @ Dec 25 2007, 10:09) *
ЗЫ: скачал, под wine работает безупречно. Не заметил разницы между naked и OS_main на примере, специально объявил uint16_t array[64] в main. Бинарник совпадает до байта.
К сожалению реальный код, как и в предыдущих версиях, больше чем у 3.3.6, 3660 байт против 3274 в одном из моих проектов. Жаль.


НУ СКОЛЬКО РАЗ ВАМ МОЖНО ПОВТОРЯТЬ. Что место в для локадьных переменных в стеке выделяеться в прологе функции. Применениие атрибута 'naked' выкидывает код пролога и эпилога из функции! Это значит что место для локальных переменных не будет выделено!!!!

Анатолий.
Go to the top of the page
 
+Quote Post
733259
сообщение Dec 25 2007, 10:18
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Цитата
Различие в том, где она создается. Локальная - в прологе мэйна. Static - в секции bss, если не ошибаюсь.
Знаю, я имел в виду их использование в програме (в main) одинаковое, если есть существенные различия, укажите.
Цитата
А массивы вроде локальными не бывают, они всегда static, даже если объявлены локальными.
Но указатель стека в прологе main устанавливается в зависимости от. Правда это в 3.3.6, в 4.2.2 еще не проверил.
Цитата
НУ СКОЛЬКО РАЗ ВАМ МОЖНО ПОВТОРЯТЬ. Что место в для локадьных переменных в стеке выделяеться в прологе функции.
Да ясно всё. Я полагаю, что без пролога в main можно прекрасно обойтись, я всегда обходился, во всяком случае. Локальные переменные в main, не static, какой-то очень частный случай, ИМХО.

Сообщение отредактировал 733259 - Dec 25 2007, 10:20
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 10:25
Сообщение #28


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(733259 @ Dec 25 2007, 13:18) *
Да ясно всё. Я полагаю, что без пролога в main можно прекрасно обойтись, я всегда обходился, во всяком случае. Локальные переменные в main, не static, какой-то очень частный случай, ИМХО.


Компилятор может создать код, которому требуеться место в стеке, даже тогда, когда вы не создавали локальных переменных.

Я постараюсь вечером найти пример.

Анатолий.

Сообщение отредактировал aesok - Dec 25 2007, 10:26
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Dec 26 2007, 14:38
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Посмотрите, плиз, во втором сервис-паке Студии переделали окно программатора и по-моему, кнопка "чтение EEPROM в симулятор" не работает. Проверял как с Драконом так и с AvrUSB500. Баг или я что-то делаю не так?
Go to the top of the page
 
+Quote Post
Visor
сообщение Dec 26 2007, 18:48
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Беда какая-то, при старте отладки проекта WinAVR, AVR Studio аварийно закрывается.
AVR Studio 4.13.557 SP1 + WinAVR-20071221
В чём может быть причина?
Go to the top of the page
 
+Quote Post

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

 


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


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