-
- Кстати, а в Кодевижине к битам портов можно обращаться как к полям
структур, записывать туда и читать оттуда, например, TIFR1.OCIE1A =
1; - maleon(21.07.2020 13:50)
- Это не кодвижн, это битовые поля. - evgeniy1294(21.07.2020 16:25)
- Кодевижин хавает аналогично и это PORTB.3 = 1, что ни разу не
назовётся битовым полем - maleon(21.07.2020 17:28)
- Это не соответствует стандарту, а значит ересь. Сжечь и забыть - evgeniy1294(21.07.2020 20:48)
- вот - megajohn(21.07.2020 17:59, ссылка)
- Кодевижин хавает аналогично и это PORTB.3 = 1, что ни разу не
назовётся битовым полем - maleon(21.07.2020 17:28)
- Это не кодвижн, это битовые поля. - evgeniy1294(21.07.2020 16:25)
- А какая размерность массива бит нужна? Компиляторы легко
поддерживают до 64 бита, всего то адресация через дополнительное
преобразование номера бита в маску. - VLLV(06.07.2020 09:51)
- Так пусть бы и делал всё это под капотом - maleon(06.07.2020 11:30)
- Скажу больше. В Си вообще нет массивов! Есть операция индексации []
определенная над указателем. Никто не запрещает определить операцию
битовой индексации, определенную либо над значением, либо над
указателем. - Зaбылпapoль(05.07.2020 12:38,
)
- В общем случае. Но ещё массив имеет имя, а работа с ним может быть
без скобок - обращение к начальному элементу и sizeof. - Vit(06.07.2020 01:31)
- Да, sizeof(a) / sizeof(a[0]) с битами не проканает - maleon(06.07.2020 16:19)
- Разве что вот так: sizeof(a) * 8 - maleon(06.07.2020 17:20)
- CHAR_BIT бывает не 8. - fk0(06.07.2020 18:27)
- А я, грешным делом, думал, что sizeof возвращает размер в байтах, а
не в char-ах - maleon(06.07.2020 22:43)
- 6.5.3.4 The sizeof operator RxTx(558 знак., 07.07.2020 05:17)
- А я, грешным делом, думал, что sizeof возвращает размер в байтах, а
не в char-ах - maleon(06.07.2020 22:43)
- CHAR_BIT бывает не 8. - fk0(06.07.2020 18:27)
- Разве что вот так: sizeof(a) * 8 - maleon(06.07.2020 17:20)
- Про sizeof забыл... В натуре дуализьм. Массивы как-бы есть, но их как-бы нет. - IBAH(06.07.2020 14:19)
- Интересно, чего не хватает, чтобы они "как бы были"? - SciFi(06.07.2020 14:20)
- Я бы поставил вопрос по другому: что присутствует, чтобы их "как бы
не было"? - IBAH(06.07.2020 15:58)
- index[array] == array[index]. - fk0(06.07.2020 16:48)
- не считается, это чтобы враги запутались - SciFi(06.07.2020 16:50)
- Массив в C/C++ не является полноценным типом. Его нельзя вернуть из
функции, передать по значению, нельзя присвоить (но можно
инициализировать). В C++ против этого ввели std::array. - fk0(06.07.2020 16:58)
- Заверни в структуру, и уже много чего будет можно. - SciFi(06.07.2020 17:03)
- Такая структура -- отдельный тип, не массив. - fk0(06.07.2020 17:10)
- Заверни в структуру, и уже много чего будет можно. - SciFi(06.07.2020 17:03)
- Массив в C/C++ не является полноценным типом. Его нельзя вернуть из
функции, передать по значению, нельзя присвоить (но можно
инициализировать). В C++ против этого ввели std::array. - fk0(06.07.2020 16:58)
- не считается, это чтобы враги запутались - SciFi(06.07.2020 16:50)
- index[array] == array[index]. - fk0(06.07.2020 16:48)
- Я бы поставил вопрос по другому: что присутствует, чтобы их "как бы
не было"? - IBAH(06.07.2020 15:58)
- Интересно, чего не хватает, чтобы они "как бы были"? - SciFi(06.07.2020 14:20)
- Да, sizeof(a) / sizeof(a[0]) с битами не проканает - maleon(06.07.2020 16:19)
- В общем случае. Но ещё массив имеет имя, а работа с ним может быть
без скобок - обращение к начальному элементу и sizeof. - Vit(06.07.2020 01:31)
- Переменная это "массив" байтов. В большинстве вычислительных
архитектур байт — это минимальный независимо адресуемый набор
данных. - BlackMorda(04.07.2020 22:11)
- А как в этом массиве байты идут, старшим или младшим вперёд? - maleon(06.07.2020 11:36)
- Самыми массовыми процессорами являются 4-разрядные. По крайней
мере, лет 10 назад было так. - mse homjak(04.07.2020 22:15)
- List of 4 bit microcontrollers and microprocessors - RxTx(05.07.2020 22:51, ссылка)
- Не могли бы вы привести обширный список таких процессоров и области
их применения. Любопытно. (Или ссылку/и на материал/ы) - RxTx(05.07.2020 15:11)
- mse homjak ошибается. BlackMorda(291 знак., 05.07.2020 15:25, ссылка, ссылка)
- не, не ошибается. Там, где читал, инфа была из коммерческого
отчёта(т.е. рапространяется по подписке, в инете нет следов)
какой-то аналитической конторы по полупроводникам. И по валу
4-разрядники крыли всех. Где-то середина-конец 2000-х. - mse homjak(05.07.2020 18:39)
- Уже смешно ;-) Засекречено до 2050 года? - BlackMorda(05.07.2020 22:11)
- Почему "засекречено"? Плати бабло и пользуйся. Чуваки этим на хлебушек барыжат. - mse homjak(06.07.2020 09:38)
- я эту статистику рубежа 20-21 веков тоже видел - 4-битники давили
всех по объему поставок. - Лaгyнoв(06.07.2020 06:59)
- "Мои" данные сходятся. BlackMorda(35 знак., 06.07.2020 15:00)
- Уже смешно ;-) Засекречено до 2050 года? - BlackMorda(05.07.2020 22:11)
- не, не ошибается. Там, где читал, инфа была из коммерческого
отчёта(т.е. рапространяется по подписке, в инете нет следов)
какой-то аналитической конторы по полупроводникам. И по валу
4-разрядники крыли всех. Где-то середина-конец 2000-х. - mse homjak(05.07.2020 18:39)
- Контроллеры в электронных часах, например. Такие ставят ради сверхнизкого потребления. Продукция подобного рода часто очень массовая - evgeniy1294(05.07.2020 15:23)
- mse homjak ошибается. BlackMorda(291 знак., 05.07.2020 15:25, ссылка, ссылка)
- Но зачем? - lloyd(04.07.2020 21:57)
- Понимая, что от языка не дождёшься, придумали для АРМ-ов области
"Bit band alias"-сов, maleon(214 знак., 04.07.2020 14:17 - 16:29)
- Могу ошибаться, но в М7 его уже выпилили. - evgeniy1294(04.07.2020 16:15)
- В С/С++ "Bit band alias"-сы особенно для переменных применять сильно геморно, поэтому почти никто и не использует. На АСМ-е да, можно, но многие ли пишут на АСМ-е для АРМ? В AVR-ASM-е для косвенного обращения к битам приходится целый макрос городить, хотя поправде не часто то и надо - maleon(05.07.2020 13:39)
- Могу ошибаться, но в М7 его уже выпилили. - evgeniy1294(04.07.2020 16:15)
- "Абстракторы головного мозга" до сих пор не осилили получения адрес
битового поля, пусть даже младшего байта и смещения в нём, а вы
говорите массивы бит. Дoктyp77(241 знак., 03.07.2020 14:49,
)
- Один розовый Доктур без регистрации, а такой умный. - fk0(03.07.2020 18:25)
- Есть же vector<bool> и std::bitset. Но использование этих
классов, если нужна сколько-нибудь сложная работа с битами -- не
эффективно. Они преимущественно позволяют работать с отельными
битами. Но ведь если нужны массовые операции, то их удобнее делать
с машинными словами, а не по отдельным битикам (до 64-х раз
быстрее!) В принципе можно написать свой подобный класс, который
позволяет обеспечивает только адресацию внутри битового массива
(слово и маска, последняя fk0(152 знак., 03.07.2020 13:49)
- boost::dynamic_bitset<Block> to_block_range() from_block_range() - RxTx(03.07.2020 14:22)
- std::vector<bool> - RxTx(03.07.2020 13:34)
- std::bitset - RxTx(03.07.2020 13:33)
- Такого могут хотеть только жадные задроты, нормальные программисты булев тип записывают в int и не парятся, даже если он 64-битный - maleon(03.07.2020 13:29)
- Она есть, можно нафигачить на шаблонах с constexpr функциями и перегрузить оператор []. И это все будет считаться на этапе компиляции - evgeniy1294(03.07.2020 13:23)
- Потом ещё захочется как с массивом байтов (слов и т.д.). Пусть
остаётся всё как есть, нельзя такого хотеть. Объединения и битовые
структуры для этого уже придумали - maleon(03.07.2020 13:20)
- Хотеть не вредно, вредно не хотеть. Можно подумать, ТАМ кто-нибудь
слушает :-) - SciFi(03.07.2020 13:24)
- Конечно слушает. fk0(1 знак., 03.07.2020 13:52, картинка)
- Хотеть не вредно, вредно не хотеть. Можно подумать, ТАМ кто-нибудь
слушает :-) - SciFi(03.07.2020 13:24)
- Кстати, а в Кодевижине к битам портов можно обращаться как к полям
структур, записывать туда и читать оттуда, например, TIFR1.OCIE1A =
1; - maleon(21.07.2020 13:50)