xc8 и degenerate unsigned comparison

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
A. Fig Lee
Потрогал лапой паяльник
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Re: xc8 и degenerate unsigned comparison

Сообщение A. Fig Lee »

[uquote="fsmoke",url="/forum/viewtopic.php?p=3658238#p3658238"]Короче, на форуме микрочип большинство людей пришло к выводу - что таки да - это баг компиля. И советуют ставить тикет на микрочип. Кому интересно ссыль на топик я приводил выше.

ПС
Просто разница меня поразила - за полчаса на буржуйском форуме адекватно всё разобрали с пришли к выводу. А на нашем родном коте - началось с оскорблений....печаль

Добавлено after 1 minute 56 seconds:
[uquote="oleg110592",url="/forum/viewtopic.php?p=3658221#p3658221"]Компилятор SDCC (3.9 свежий) на конструкцию вообще не ругнулся[/uquote]

Естественно, да и не должен - как я и писал в стартовом посте то, что пишет xc8 - это бред не совместимый со стандартом СИ.[/uquote]
А буржуины и на родном тебе корректно сразу так и сказали
Вобщем - держись нас, буржуинов и все будет хорошо.
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: xc8 и degenerate unsigned comparison

Сообщение КРАМ »

[uquote="fsmoke",url="/forum/viewtopic.php?p=3658263#p3658263"]в чём же мы не правы?[/uquote]
В том, что стандартный Си В ПРИНЦИПЕ не может быть реализован на МК. И чем примитивнее МК, тем больше заплаток будет содержать компилятор по сравнению со стандартом Си.
В этом нет ничего особенного и плохого. С этим можно и нужно жить. Как с силикон-эрратой на сам МК.
"Писателям на Си++" можно не беспокоиться. Если это положение дел им не нравится, то им вообще не стоит заниматься эмбеддом.
Реклама
Аватара пользователя
A. Fig Lee
Потрогал лапой паяльник
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Re: xc8 и degenerate unsigned comparison

Сообщение A. Fig Lee »

Почему не может? Какието ограмичения есть, но все равно
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: xc8 и degenerate unsigned comparison

Сообщение КРАМ »

Это не ограничения, а реализация того, что Си не предусматривает, однако целесообразно для конкретной архитектуры. Это может быть все что угодно, включая ненативную для Си разрядность, специфичный доступ к памяти или просто битовый доступ, например.
Реклама
Эиком - электронные компоненты и радиодетали
fsmoke
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб июл 10, 2010 19:33:15

Re: xc8 и degenerate unsigned comparison

Сообщение fsmoke »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3658406#p3658406"]В том, что стандартный Си В ПРИНЦИПЕ не может быть реализован на МК.[/uquote]

А теперь давайте разбираться.
Первое:

Из чего состоит компилятор языка си - грубо можно выделить 2 компонента:
a)синтаксический лексер и парсер(препроцессора и самого языка) + оптимизатор + генератор кода
б) стандартная библиотека.

Если брать стандартную библиотеку - то да, Вы абсолютно правы, очевидно, стандартная библиотека не может быть полностью реализована на дохлых МК из-за ограниченности ресурсов. Да и бог бы с ней.

Но сама процедура разбора синтаксиса и генератор кода - вполне. Да все мы не глупые люди и понятно, что есть пара оговорок, например про совсем длинные типы типа 8байтного double(да даже 4х байтный int). И всё мы прекрасно понимаем к чему приведет их частое использование, а именно к эмуляции длинных типов на 8ми битном мк. И я всю математику перевожу на fixed point обычно, чтоб уйти от плавающей точки. Но в приведённом тривиальном куске кода - такого нет и в помине.

Кроме того - пара ограничений - это не повод зарубить весь компиль и пустить всё остальное не по стандарту.

Второе:
Если копнуть глубже, а именно в теорию компиляторов: исходя из листинга (повторюсь - я не силён в микрочиповском асме) - то код вполне валидный. Т.е. Варнинг получается предупреждает о том, чего попросту нет!
Кроме - того - убийственным аргументом является то, что варнинг вылезает только при включенной оптимизации. Т.е. это не проблема урезанности языка СИ на конкретном железе, а ошибка оптимизатора.

И мы с вами пришли к тому, что данная ошибка не имеет никакого отношения к железу - и даже к генератору конечного кода. Я думаю ошибка на этапе свёртки AST-дерева оптимизатором, именно там выплёвывается варнинг ещё задолго до начала генерации кода под конкретную архитектуру.

Если говорить проще - ошибка никак не связана с микроконтроллерами.

ПС
Кому интересно что такое AST-дерево - можно почитать даже в википедии https://ru.wikipedia.org/wiki/Абстрактн ... кое_дерево

Добавлено after 4 minutes 40 seconds:
Да и вообще - если б даже не существовало никаких стандартов - с учетом того что код тривиален и тип int16_t вполне себе реализуем на всей линейке микрочиповских камней - по логике вещей этот варгиг абсурден, и сточки зрения стандарта и без него
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: xc8 и degenerate unsigned comparison

Сообщение КРАМ »

[uquote="fsmoke",url="/forum/viewtopic.php?p=3658481#p3658481"]И я всю математику перевожу на fixed point обычно, чтоб уйти от плавающей точки.[/uquote]
А в Си есть фикс пойнт? Это для меня новость.... И какой он стандартной разрядности-формы?
[uquote="fsmoke",url="/forum/viewtopic.php?p=3658481#p3658481"]по логике вещей этот варнинг абсурден, и сточки зрения стандарта и без него[/uquote]
Смысл моих комментариев в этой теме сводился к тому, что если компилятор дает возможность сгенерировать загружаемый хекс, то какая разница какие варнинги он даст в Output?
Если Вы чего то боитесь, проконтролируйте листинг дизасма. Проблема не стоит выеденного яйца.
Реклама
fsmoke
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб июл 10, 2010 19:33:15

Re: xc8 и degenerate unsigned comparison

Сообщение fsmoke »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3658498#p3658498"][uquote="fsmoke",url="/forum/viewtopic.php?p=3658481#p3658481"]И я всю математику перевожу на fixed point обычно, чтоб уйти от плавающей точки.[/uquote]
А в Си есть фикс пойнт?[/uquote]

Нет, встроенного конечно нет, но он легко пишется - и работает само собой быстрее. Даже через обычный uint16_t - можно написать убогий фикс поинт. А если взять uint32_t то вполне годный(хотя помоему в пиках uint32_t скатывается к 24 битам, если память не подводит). Даже с учетом эмуляции 16, 24 и 32 битных типов - получается гораздо быстрее, чем на флоатах. Там где не нужны супер точные вычисления(а таких задач 80% минимум) - вполне можно извернуться через фикс. Аппаратный сопроцессор вроде как только на 32х пиках есть, надо бы в конторе отсыпать себе поиграться на досуге - там кстати уже можно на крестах писать аккуратненько :))
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: xc8 и degenerate unsigned comparison

Сообщение КРАМ »

[uquote="fsmoke",url="/forum/viewtopic.php?p=3658502#p3658502"]Аппаратный сопроцессор вроде как только на 32х пиках есть[/uquote]
Фикс пойнт - аппаратная фича 16-разрядной платформы Микрочипа. ДСП ядро этой платформы (в dsPIC30/33 всех разновидностей) аккумуляторы В ПРИНЦИПЕ заточены под этот формат, включая инструкции add, sac (sac.r), да и все остальные тоже). Разрядность этих аккумуляторов, к слову, - 40.
Это я не к Вашему вопросу темы, а к вопросу о совместимости стандартного Си с железом МК.
Что касается фикс пойнта в Си, то реализовать такой формат поверх языка, естественно, несложно, но вот вся эта реализация будет притянута за уши, а читабельность равна нулю.

Добавлено after 2 minutes 45 seconds:
[uquote="fsmoke",url="/forum/viewtopic.php?p=3658502#p3658502"]хотя помоему в пиках uint32_t скатывается к 24 битам, если память не подводит[/uquote]
В каких ПИКах? И с чего бы?
Аватара пользователя
A. Fig Lee
Потрогал лапой паяльник
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Re: xc8 и degenerate unsigned comparison

Сообщение A. Fig Lee »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3658460#p3658460"]Это не ограничения, а реализация того, что Си не предусматривает, однако целесообразно для конкретной архитектуры. Это может быть все что угодно, включая ненативную для Си разрядность, специфичный доступ к памяти или просто битовый доступ, например.[/uquote]
Если мне склероз не изменяет, нативной разрядности в си нет.
fsmoke
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб июл 10, 2010 19:33:15

Re: xc8 и degenerate unsigned comparison

Сообщение fsmoke »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3658509#p3658509"]Фикс пойнт - аппаратная фича 16-разрядной платформы Микрочипа.[/uquote]
Я с дспиками никогда не работал...

[uquote="КРАМ",url="/forum/viewtopic.php?p=3658509#p3658509"]Что касается фикс пойнта в Си, то реализовать такой формат поверх языка, естественно, несложно, но вот вся эта реализация будет притянута за уши, а читабельность равна нулю.[/uquote]

Смотря как написать, нечитабельнно можно написать и тривиальный код, всё зависит от опыта

[uquote="КРАМ",url="/forum/viewtopic.php?p=3658509#p3658509"]В каких ПИКах? И с чего бы?[/uquote]
Сорян, не в пиках это было....и вообще не в мк . Чет загнался
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: xc8 и degenerate unsigned comparison

Сообщение КРАМ »

[uquote="A. Fig Lee",url="/forum/viewtopic.php?p=3658543#p3658543"]нативной разрядности в си нет.[/uquote]
Она определена стандартными типами.
К ним не относится разрядность 40 или 24, 1 или 4
Ответить

Вернуться в «PIC»