-
- Вот это вот - адресная арифметика. teap0t(590 знак., 04.10.2020 17:39)
- Подобные манипуляции с указателями без всякой на то необходимости -
однозначно говнокод и потенциальный глюкодром при использовании. ЫЫyкпy(445 знак., 04.10.2020 19:05 - 19:27)
- Ключевые слова - "без всякой на то необходимости". В данном случае
я действительно не вижу необходимости. С другой стороны, я вообще
не вижу нужды в SPL/HAL/LL. Мне кажется, писать напрямую в регистры
короче и понятнее. Вот код из реального проекта: йцyкeн(630 знак., 04.10.2020 19:58)
- Пасиба за пример, но я просто хотел узнать мнение народа о таком
способе работы. Всё сложно. Мне такое неявное хранение и
использование смещений не ндравится совсем. Т.е. к косвенному
обращению у меня, понятно, претензий нет, но делаться такое
обращение должно максимально чётко и однозначно, а мешать в одном
if-е прямое и косвенное обращение по-моему недопустимо. Но я же
должен спросить. Вон как все возбудились, даже Евгений новый диск
прокрутил. - teap0t(04.10.2020 20:41)
- Язык Си знаменит тем, что если программист непременно хочет выстрелить себе в ногу, компилятор ему мешать не будет. Это не баг, это фичер, который позволяет писать на Си то, что иначе пришлось бы писать на ассемблере. Но это не повод палить из этого ружья направо и налево. - йцyкeн(04.10.2020 21:27)
- Пасиба за пример, но я просто хотел узнать мнение народа о таком
способе работы. Всё сложно. Мне такое неявное хранение и
использование смещений не ндравится совсем. Т.е. к косвенному
обращению у меня, понятно, претензий нет, но делаться такое
обращение должно максимально чётко и однозначно, а мешать в одном
if-е прямое и косвенное обращение по-моему недопустимо. Но я же
должен спросить. Вон как все возбудились, даже Евгений новый диск
прокрутил. - teap0t(04.10.2020 20:41)
- Это пример для их STM32L-Discovery. Код 2015 года. Библиотека STM32L1xx_StdPeriph_Driver . teap0t(16 знак., 04.10.2020 19:14, ссылка, ссылка)
- Ключевые слова - "без всякой на то необходимости". В данном случае
я действительно не вижу необходимости. С другой стороны, я вообще
не вижу нужды в SPL/HAL/LL. Мне кажется, писать напрямую в регистры
короче и понятнее. Вот код из реального проекта: йцyкeн(630 знак., 04.10.2020 19:58)
- Я бы обернул эту арифметику в пару функций. Чтобы, если реальность
покажет какие-либо минусы, переиграть было не сложно. - Cкpипaч(04.10.2020 18:10)
- Обернуть в пару функций именно действия по модификации адреса?
Сделать аналог итератора ? - teap0t(04.10.2020 19:22, ссылка)
- Да. Итератора или просто set/get. - Cкpипaч(04.10.2020 21:28)
- Ок. Согласен полностью. - teap0t(04.10.2020 21:57)
- Да. Итератора или просто set/get. - Cкpипaч(04.10.2020 21:28)
- MISRA C явно запрещает указательную арифметику, вопрошающему это
принципиально. - evgeniy1294(04.10.2020 18:24)
- Не припомню таких запретов. IAR в дефолтном режиме MISRA2004 ошибок
не находит. - teap0t(04.10.2020 19:17)
- Array indexing is the only acceptable form of pointer arithmetic, because it is clearer and hence less error prone than pointer manipulation. This rule bans the explicit calculation of pointer values. Array indexing shall only be applied to objects defined as an array type. Any explicitly calculated pointer value has the potential to access unintended or invalid memory addresses. Pointers may go out of bounds of arrays or structures, or may even point to effectively arbitrary evgeniy1294(30 знак., 04.10.2020 19:34)
- Вопрос звучал так: "А если очень хочется, то?". Ответ: Если "очень
хочется, оборачивай в функции (или объекты)". Аккуратно
задокументированное нарушение правил, нарушением не является :) - Cкpипaч(04.10.2020 18:28)
- Боинги падают, теслы разбиваются - evgeniy1294(04.10.2020 18:31)
- Поскольку они это делают по правилам (падают и разбиваются), все причастные имеют на хлеб с маслом. - Evgeny_CD(04.10.2020 19:07)
- Боинги падают, теслы разбиваются - evgeniy1294(04.10.2020 18:31)
- Не припомню таких запретов. IAR в дефолтном режиме MISRA2004 ошибок
не находит. - teap0t(04.10.2020 19:17)
- Обернуть в пару функций именно действия по модификации адреса?
Сделать аналог итератора ? - teap0t(04.10.2020 19:22, ссылка)
- Тут всё вроде бы на поверхности, подводных камней не видно. Пусть
будет. Наверняка нарушает приблизительно 37 правил мисры, но это
другой вопрос. - SciFi(04.10.2020 17:50)
- С дефолтным набором флажков на закладке MISRA2004 в IAR ошибок нет. - teap0t(04.10.2020 19:08)
- Я с мисрой почти не знаком, но какие-то правила на глаза
попадались. Некоторые из них машина проверить не может, КМК. Ну,
шибко умная может, наверное, но вы меня поняли, надеюсь. - SciFi(04.10.2020 20:15)
- У IAR руководство прилагается, которое я тут цитирую. Там прямо
указано что проверяется и как обходить, если что. Но исходно вопрос
(который #15) не о "стандартах", а о "практиках". Скрипач сразу врубился, но оценку, что характерно, не дал. - teap0t(04.10.2020 20:47)
- Нужно оценку? "Семь с плюсом", устроит? :) Cкpипaч(466 знак., 04.10.2020 21:26)
- Давно живу. Вы не любите давать оценки. Предпочитаете за притчи
прятаться. Я без осуждения, просто это ваш почерк. Цифровой след,
если хотите. Он вас отличает от других. - teap0t(04.10.2020 22:01)
- Считаю "оценки" банальным хамством. Обсуждение это обмен аргументами и гипотезами, а не оценками.
Обсуждение должно быть завершено как только специальный человек
(руководитель) примет решение. И начнется демократический централизм плюс самодисциплина. Cкpипaч(174 знак., 04.10.2020 22:13)
- Я в корневом посте (#15) просил пояснить, является ли некий приём
программирования "говнокодом" или нет. Это был основной мой
интерес. Я понял, что является, но "на косвенных". - teap0t(04.10.2020 22:16)
- "Говнокод" это последовательность синтаксических конструкций, очень неэффективно использующая ресурсы (по сравнению с
референсной) или корректная лишь для части возможных входных
данных. Cкpипaч(302 знак., 04.10.2020 22:40)
- Вот с последним предложением целиком и полностью. Ибо если енум
называется "режим", а содержит смещение, то это идеологически
неправильно. - teap0t(04.10.2020 22:44)
- К слову, в C++ использование enum дает квази-строгую типизацию. В
enum нельзя просто так записать int, скрытое приведение типа не
сработает. Cкpипaч(183 знак., 04.10.2020 22:53)
- Строгя типизация в C++ работает не для enum, а для enum class. Это разные сущности. - evgeniy1294(04.10.2020 23:56)
- К слову, в C++ использование enum дает квази-строгую типизацию. В
enum нельзя просто так записать int, скрытое приведение типа не
сработает. Cкpипaч(183 знак., 04.10.2020 22:53)
- Вот с последним предложением целиком и полностью. Ибо если енум
называется "режим", а содержит смещение, то это идеологически
неправильно. - teap0t(04.10.2020 22:44)
- "Говнокод" это последовательность синтаксических конструкций, очень неэффективно использующая ресурсы (по сравнению с
референсной) или корректная лишь для части возможных входных
данных. Cкpипaч(302 знак., 04.10.2020 22:40)
- Я в корневом посте (#15) просил пояснить, является ли некий приём
программирования "говнокодом" или нет. Это был основной мой
интерес. Я понял, что является, но "на косвенных". - teap0t(04.10.2020 22:16)
- Считаю "оценки" банальным хамством. Обсуждение это обмен аргументами и гипотезами, а не оценками.
Обсуждение должно быть завершено как только специальный человек
(руководитель) примет решение. И начнется демократический централизм плюс самодисциплина. Cкpипaч(174 знак., 04.10.2020 22:13)
- Давно живу. Вы не любите давать оценки. Предпочитаете за притчи
прятаться. Я без осуждения, просто это ваш почерк. Цифровой след,
если хотите. Он вас отличает от других. - teap0t(04.10.2020 22:01)
- Нужно оценку? "Семь с плюсом", устроит? :) Cкpипaч(466 знак., 04.10.2020 21:26)
- У IAR руководство прилагается, которое я тут цитирую. Там прямо
указано что проверяется и как обходить, если что. Но исходно вопрос
(который #15) не о "стандартах", а о "практиках". Скрипач сразу врубился, но оценку, что характерно, не дал. - teap0t(04.10.2020 20:47)
- Я с мисрой почти не знаком, но какие-то правила на глаза
попадались. Некоторые из них машина проверить не может, КМК. Ну,
шибко умная может, наверное, но вы меня поняли, надеюсь. - SciFi(04.10.2020 20:15)
- С дефолтным набором флажков на закладке MISRA2004 в IAR ошибок нет. - teap0t(04.10.2020 19:08)
- Подобные манипуляции с указателями без всякой на то необходимости -
однозначно говнокод и потенциальный глюкодром при использовании. ЫЫyкпy(445 знак., 04.10.2020 19:05 - 19:27)
- Вот это вот - адресная арифметика. teap0t(590 знак., 04.10.2020 17:39)