Пины и массив

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 11
Зарегистрирован: Вт окт 07, 2008 03:26:32
Откуда: Волгоград

Сообщение Simba »

Может кому будет интересно, вот что я нарыл в хелпе к ImageCraft (он работает с пинами с помощью макросов, как IAR)

Some compilers support C extensions to access individual bits, such as using PORTA.2 to access bit 2 of the IO register PORTA. By definition, extensions are not portable to other standard C compilers. Also, note that the bit-twiddling operations listed here produce the best code and are entirely portable. Furthermore, using the suggested macros above may make them easier to use. Therefore, our compilers do not support this extension.

Some users also want to use structure bitfields to access IO register bits. While this would work for a pointer to structure with suitable casting of the pointer to the correct IO address, it requires an extension to the language to overlay a structure type at a specific IO register location. Furthermore, bitfield allocation order is not specified by the C language, and typically bitfields do not generate the best code. We strongly encourage you to use the bit-twiddling operators

В общем лучше всего писать в машинных кодах, можно получить самый "хороший" код, что я когда то и делал :))
Назад на дерево!
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18708
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

не надо на дерево

думаете, IAR генерирует ассемблерный код хуже, чем CVAVR?! или предложенный мной WinAVR-овский вариант в ассемблерном листинге окажется много хуже? очень маловероятно... просто CVAVR в очередной раз "упростил" жизнь за счет отдаления от стандарта языка, в котором нет понятия отдельный БИТ (как переменная)...
но все равно делает он что-то в том же духе, что и все прочие компиляторы...

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Родился
Сообщения: 11
Зарегистрирован: Вт окт 07, 2008 03:26:32
Откуда: Волгоград

Сообщение Simba »

Строгое соответствие стандарту нужно для облегчения переносимости кода, а если переносить код не нужно, то и соблюдение стандартов не особенно греет. Та что думаю однозначный ответ что лучше дать трудно. Мне больше нравится при создании программы делать меньше телодвижений. Даже копи-пасте. Ленивый я... :)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18708
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 11
Зарегистрирован: Вт окт 07, 2008 03:26:32
Откуда: Волгоград

Сообщение Simba »

Я так и предполагал, что про форум скажете. Наверно надо бы разработчикам компиляторов для МК собраться вместе и создать расширение стандарта С (С++) с учётом специфики области, вот тогда наша жизнь стала бы легче. В общем большое спасибо за общение, предлагаю тему закрыть.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18708
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Simba писал(а):Я так и предполагал, что про форум скажете. Наверно надо бы разработчикам компиляторов для МК собраться вместе и создать расширение стандарта С (С++) с учётом специфики области, вот тогда наша жизнь стала бы легче. В общем большое спасибо за общение, предлагаю тему закрыть.
все уже давно придумано: WinAVR поддерживает расширения С++ в части "битовых полей" (bitfield)... и не только
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 72
Зарегистрирован: Ср сен 17, 2008 08:12:46
Откуда: Санкт-Петербург, Пушкин

Сообщение kent.a »

Как программер могу смело заявить что не соответствие стандарта это очень и очень плохо. стандарты не зря пишутся. Взять пример известного проекта Mozilla. В исходниках браузера есть одно очень интересное место. Там коммент стоит, а ниже идет индийский код что-то вроде if (x==1) {x=1} else {x=x;}
коммент гласит Не удалять этот код. потому как компилятор Visual Studio без этого кода компилит неправильный код. Вот я представляю как они отлаживали код, и матерились, когда стали смотреть asm-овский код.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»