|
IAR vs AVR GCC, Непрокомпилы |
|
|
|
Jul 21 2009, 21:54
|

Частый гость
 
Группа: Свой
Сообщений: 138
Регистрация: 12-05-09
Пользователь №: 48 987

|
Профессионально пишу уже 2 года на ASMе и Cшке(AVR GCC) для AVRок. На GCC есть одна вещь которая бесит порой. Оптимизатор. Работаю на уровне Os(высший, by size). Оптимизирует нехреново. В железе работает, в отладчике на уровне переменных практически не протрассируеш. Только в дизасм смотри. Так вот этот GCC иногда считает многие участки кода не нужными.
Допустим запускаю ацп конверсию с прерыванием, в прерывании ставлю какой то флаг, и по флагу этому в цикле, я должен что то сделать. Ну да ладно подробности. Факт в том что компилятор теряет логические связи, считает участок кода не нужным. Выбрасывает его, ставит бесконечный цикл. Бороться с ним конечно всячески можно(извращениями).
Вот хотел спросить, как по части непрокомпилов(непонимании компилятора) IAR ? При максимальном уровне оптимизации. Ну и скажите свои за и против IAR. Просто думаю, стоит его осваивать взамен AVR GCC иль нет.
To Moderators, если в не тот раздел попал, просьба сильно не пинать.
|
|
|
|
|
Jul 21 2009, 22:01
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(IXFN50N80Q2 @ Jul 22 2009, 01:54)  Допустим запускаю ацп конверсию с прерыванием, в прерывании ставлю какой то флаг, и по флагу этому в цикле, я должен что то сделать. Ну да ладно подробности. Факт в том что компилятор теряет логические связи, считает участок кода не нужным. Выбрасывает его, ставит бесконечный цикл. Бороться с ним конечно всячески можно(извращениями). Простите, а Вам знакомо слово volatile? Цитата(IXFN50N80Q2 @ Jul 22 2009, 01:54)  Вот хотел спросить, как по части непрокомпилов(непонимании компилятора) IAR ? Даже неологизм изобрели. Нет такого понятия, есть неправильно написанный софт.
|
|
|
|
|
Jul 21 2009, 23:12
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:06)  Хм. Интересна ваша логика. Виноват программист. Понятно, что он, если не знает всех подводных камней компилятора. Да, виноват программист. Но не знает он не "подводные камни компилятора" (которых нет), а просто язык "C". Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:06)  Хм. Виноват программист, еще скажите свой компилятор написать Нет, достаточно изучить язык и стандарт, которого придерживаются существующие.
|
|
|
|
|
Jul 21 2009, 23:20
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:06)  подводных камешков, а не о знании всех подводных камешков конкретного. Хм. Виноват программист, еще скажите свой компилятор написать. У любого нормального компилятора оптимизатор просто обязан вести себя схожим образом. Не нравятся его действия? Отключите оптимизатор.  Или все же почитайте про volatile - что это и зачем нужно.
|
|
|
|
|
Jul 21 2009, 23:29
|

Частый гость
 
Группа: Свой
Сообщений: 138
Регистрация: 12-05-09
Пользователь №: 48 987

|
Ладно. Не буду с вами "ругаться" и пытаться что доказывать что WinAVR не идеален. Было бы все идеально и безошибочно предсказуемо, IAR бы помер. HT-PIC например банки у меня путал (очень редко), пока сам не взял за правило прописывать где че будет лежать, встречались проблемы. А где разместить переменную, как и Volatile, сложно отнести к самому СИ. Это всего лишь приказ компилятору- ЭТО ТУДА, а не C.
Согласен. Грамотно применяй Volatile да будет счастье в этом мире.
Но Volatile не C, а для оптимизатора. То что любой оптимизатор будет резать че нить, что не понравится, согласен. Мне интересно сравнение с IAR. Как он понимает сложные конструкции кода
И еще могу добавить. На PIC тоже на Cшке пишу. Там при работе оптимизатора, как не странно, не разу не обрезался код, по его субъективному мнению. MPLAB C18 на мой взгляд вообще отличная вещь. Подвохов от вообще нет.
Сообщение отредактировал IXFN50N80Q2 - Jul 21 2009, 23:31
|
|
|
|
|
Jul 21 2009, 23:36
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:21)  Но Volatile не C, а для оптимизатора. То что любой оптимизатор будет резать че нить, что не понравится, согласен. Мне интересно сравнение с IAR. Как он понимает сложные конструкции кода Оптимизатор будет "резать" строго в соответствии со стандартом и только. Кто-то "режет" хуже, из-за чего могут "работать" и те программы, которые по причине ошибочного построения работать не должны. У IAR'а с пониманием все в порядке, не сомневайтесь. Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:29)  И еще могу добавить. На PIC тоже на Cшке пишу. Там при работе оптимизатора, как не странно, не разу не обрезался код, по его субъективному мнению. Как раз случай недоработки оптимизатора. Нет у компилятора "субъективного мнения", он не разумен. Приведите пример, что у Вас WinAVR несправедливо режет.
|
|
|
|
|
Jul 22 2009, 04:34
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:06)  Вообще то топик я создал о сравнении компиляторов в данном плане. подводных камешков, а не о знании всех подводных камешков конкретного. Ну, если сравнивать IAR и GCC, то с ИАРом у меня отношения хуже складываются (для MSP430). Полного взаимопонимания нет. Иногда неправильно отрабатывает if, и на раскопки причины уходит несколько часов. Наверно, это таки моя вина, а не компилятора, однако факт.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 22 2009, 12:26
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561

|
Цитата(IXFN50N80Q2 @ Jul 22 2009, 02:29)  Согласен. Грамотно применяй Volatile да будет счастье в этом мире.
Но Volatile не C, а для оптимизатора. То что любой оптимизатор будет резать че нить, что не понравится, согласен. Мне интересно сравнение с IAR. Как он понимает сложные конструкции кода ...уверяю Вас IAR в таком случае порежет не хуже.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|