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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> IAR vs AVR GCC, Непрокомпилы
IXFN50N80Q2
сообщение Jul 21 2009, 21:54
Сообщение #1


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

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



Профессионально пишу уже 2 года на ASMе и Cшке(AVR GCC) для AVRок.
На GCC есть одна вещь которая бесит порой. Оптимизатор.
Работаю на уровне Os(высший, by size).
Оптимизирует нехреново. В железе работает, в отладчике на уровне переменных практически не протрассируеш. Только в дизасм смотри.
Так вот этот GCC иногда считает многие участки кода не нужными.

Допустим запускаю ацп конверсию с прерыванием, в прерывании ставлю какой то флаг,
и по флагу этому в цикле, я должен что то сделать. Ну да ладно подробности.
Факт в том что компилятор теряет логические связи, считает участок кода не нужным.
Выбрасывает его, ставит бесконечный цикл.
Бороться с ним конечно всячески можно(извращениями).

Вот хотел спросить, как по части непрокомпилов(непонимании компилятора) IAR ?
При максимальном уровне оптимизации.
Ну и скажите свои за и против IAR.
Просто думаю, стоит его осваивать взамен AVR GCC иль нет.

To Moderators, если в не тот раздел попал, просьба сильно не пинать.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 21 2009, 22:01
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(IXFN50N80Q2 @ Jul 22 2009, 01:54) *
Допустим запускаю ацп конверсию с прерыванием, в прерывании ставлю какой то флаг,
и по флагу этому в цикле, я должен что то сделать. Ну да ладно подробности.
Факт в том что компилятор теряет логические связи, считает участок кода не нужным.
Выбрасывает его, ставит бесконечный цикл.
Бороться с ним конечно всячески можно(извращениями).

Простите, а Вам знакомо слово volatile?

Цитата(IXFN50N80Q2 @ Jul 22 2009, 01:54) *
Вот хотел спросить, как по части непрокомпилов(непонимании компилятора) IAR ?

Даже неологизм изобрели. Нет такого понятия, есть неправильно написанный софт.
Go to the top of the page
 
+Quote Post
IXFN50N80Q2
сообщение Jul 21 2009, 22:06
Сообщение #3


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

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



Volatile Знаю. Но искать скрытые подвохи по дизасму(а такие бывали) как то не хочется. И все Volatile объявлять тоже не хороше.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 21 2009, 22:13
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(IXFN50N80Q2 @ Jul 22 2009, 02:06) *
Volatile Знаю. Но искать скрытые подвохи по дизасму(а такие бывали) как то не хочется. И все Volatile объявлять тоже не хороше.

Если возможны "скрытые подвохи", значит знаете недостаточно. В 99.999% случаев в ошибке виноват программист, а не "глючный компилятор".
Go to the top of the page
 
+Quote Post
IXFN50N80Q2
сообщение Jul 21 2009, 23:06
Сообщение #5


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

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



Хм. Интересна ваша логика. Виноват программист. Понятно, что он, если не знает всех подводных камней компилятора.
Вообще то топик я создал о сравнении компиляторов в данном плане. подводных камешков, а не о знании всех подводных камешков конкретного.
Хм. Виноват программист, еще скажите свой компилятор написать.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 21 2009, 23:12
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:06) *
Хм. Интересна ваша логика. Виноват программист. Понятно, что он, если не знает всех подводных камней компилятора.

Да, виноват программист. Но не знает он не "подводные камни компилятора" (которых нет), а просто язык "C".

Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:06) *
Хм. Виноват программист, еще скажите свой компилятор написать

Нет, достаточно изучить язык и стандарт, которого придерживаются существующие.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jul 21 2009, 23:20
Сообщение #7


Местный
***

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



Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:06) *
подводных камешков, а не о знании всех подводных камешков конкретного.
Хм. Виноват программист, еще скажите свой компилятор написать.

У любого нормального компилятора оптимизатор просто обязан вести себя схожим образом. Не нравятся его действия? Отключите оптимизатор. smile.gif
Или все же почитайте про volatile - что это и зачем нужно.
Go to the top of the page
 
+Quote Post
IXFN50N80Q2
сообщение Jul 21 2009, 23:29
Сообщение #8


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

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 21 2009, 23:36
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 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 несправедливо режет.
Go to the top of the page
 
+Quote Post
IXFN50N80Q2
сообщение Jul 21 2009, 23:43
Сообщение #10


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

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



Безвыходных случаев с WINAVR не было.
Всяческими способами я его заставлял понимать как надо.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jul 22 2009, 04:34
Сообщение #11


Беспросветный оптимист
******

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



Цитата(IXFN50N80Q2 @ Jul 22 2009, 03:06) *
Вообще то топик я создал о сравнении компиляторов в данном плане. подводных камешков, а не о знании всех подводных камешков конкретного.

Ну, если сравнивать IAR и GCC, то с ИАРом у меня отношения хуже складываются (для MSP430).
Полного взаимопонимания нет.
Иногда неправильно отрабатывает if, и на раскопки причины уходит несколько часов.
Наверно, это таки моя вина, а не компилятора, однако факт.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 22 2009, 04:53
Сообщение #12


Гуру
******

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



Цитата(IXFN50N80Q2 @ Jul 22 2009, 00:54) *
На GCC есть одна вещь которая бесит порой. Оптимизатор.

Могу только поддержать aaarrr - у Вас действительно обычные sad.gif проблемы с выражением мыслей на 'C'. Поиски "правильного" компилятора бесполезны - 99,9% Ваших проблем не в компиляторе sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
msalov
сообщение Jul 22 2009, 06:34
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



 
Цитата(IXFN50N80Q2 @ Jul 22 2009, 02:29) *
MPLAB C18 на мой взгляд вообще отличная вещь. Подвохов от вообще нет.


Ну не знаю, за свое недолгое общение с этим продуктом (около года), были найдены баги компилятора (неправильное отрабатывание битового поля нулевой ширины, предупреждения при преобразования указателей к const void* и т.п., всего уже не помню). Хорошо что служба поддержки на это реагирует, хоть и не с первого раза  unsure.gif

В других компиляторах ничего не нашёл smile.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 22 2009, 07:44
Сообщение #14


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Нет ничего идеального. Все создается людьми. Другое дело, что коммерческий IAR может быть лучше по некоторым критериям, чем бесплатный GCC. Просто рабочий коллектив получает за работу деньги и не один день специализуруется в отрасли средств разработки.
Уважаемый IXFN50N80Q2! А что Вы хотите сказать? Может быть приведете кусочек кода с листингом?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
tag
сообщение Jul 22 2009, 12:26
Сообщение #15


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

Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561



Цитата(IXFN50N80Q2 @ Jul 22 2009, 02:29) *
Согласен. Грамотно применяй Volatile да будет счастье в этом мире.

Но Volatile не C, а для оптимизатора. То что любой оптимизатор будет резать че нить, что не понравится, согласен.
Мне интересно сравнение с IAR. Как он понимает сложные конструкции кода


...уверяю Вас IAR в таком случае порежет не хуже.
Go to the top of the page
 
+Quote Post

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

 


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


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