-
- а что непонятного, хочу сам задавать положение битового поля в
структуре, а не как компилятору вздумается - Aleksey_75(21.08.2022 13:37)
- Как уже писали, компилятор не делает это как вздумается. У вас всего лишь проблема с индейцами. Вот, например, класс для доступа к полям регистра. При обращении к полю доступ напрямую, а если обращение к регистру целиком (макросами теми же), то через перегруженные операторы. В них индейцав можно поменять командой RBIT. Но вообще, плохая идея. Лучше макросы под правильных индейцев переписать и выкинуть их, ибо макросы зло. VladislavS.(414 знак., 22.08.2022 14:52)
- Код в студию! Как было и как хочется, чтобы стало. - SciFi(21.08.2022 20:07)
- Да какой там код )) Вот Aleksey_75(475 знак., 21.08.2022 20:50)
- Есть у меня ощущение, что ТС выводит с младшего байта старшим битом вперед. И ТС как честный человек должен сказать - "да" - IBAH(22.08.2022 20:34)
- может волшебное слово __packed спасет отца российской демократии? Nikolay801_(272 знак., 22.08.2022 09:27)
- не спасет!!! у меня изначально структура упакована, сюда просто не
вписал... упаковка кстати вообще никак не влияет - Aleksey_75(22.08.2022 09:32)
- Чудеса надо экономить...По определению структуры - в каком порядке
описываются в таком и располагаются "В языке Си, структура (struct) — композитный тип данных,
инкапсулирующий без сокрытия набор значений различных типов.
Порядок размещения значений в памяти задаётся при определении
типа и сохраняется на протяжении времени жизни объектов, что
даёт возможность косвенного доступа (например, через
указатели)." IBAH(1 знак., 22.08.2022 13:06, ссылка)
- выше привел как фактически располагаются поля! Проверил в Keil и CVI, одинаково! - Aleksey_75(22.08.2022 13:12)
- Порядок битов в битовых полях "implementation-defined". Такшта
маемо то, що маемо. - SciFi(22.08.2022 13:08)
- Перефразирую. Почему в библиотеке CMSIS используются битовые поля
если они "implementation-defined"? IBAH(869 знак., 22.08.2022 18:17)
- CMSIS имеет порты под разные компиляторы. Т.е. ежели какой
компилятор идет не в ногу - то для него нужен будет отдельный порт
CMSIS. - LightElf(22.08.2022 19:11)
- не убедительно... В приведенном файле, чуть выше IBAH(2194 знак., 22.08.2022 20:19)
- CMSIS имеет порты под разные компиляторы. Т.е. ежели какой
компилятор идет не в ногу - то для него нужен будет отдельный порт
CMSIS. - LightElf(22.08.2022 19:11)
- А мужики то не знают ... IBAH(1 знак., 22.08.2022 14:25, ссылка)
- Перефразирую. Почему в библиотеке CMSIS используются битовые поля
если они "implementation-defined"? IBAH(869 знак., 22.08.2022 18:17)
- Чудеса надо экономить...По определению структуры - в каком порядке
описываются в таком и располагаются "В языке Си, структура (struct) — композитный тип данных,
инкапсулирующий без сокрытия набор значений различных типов.
Порядок размещения значений в памяти задаётся при определении
типа и сохраняется на протяжении времени жизни объектов, что
даёт возможность косвенного доступа (например, через
указатели)." IBAH(1 знак., 22.08.2022 13:06, ссылка)
- не спасет!!! у меня изначально структура упакована, сюда просто не
вписал... упаковка кстати вообще никак не влияет - Aleksey_75(22.08.2022 09:32)
- То есть в каждом байте нужно обратить порядок разрядов? Ну и сделай
где-нибудь такую операцию. Пусть будет два экземпляра данных: для
старого порядка и для нового. Нефиг экономить на спичках. - SciFi(21.08.2022 23:05)
- смысл теряется, проще оставить все как есть - Aleksey_75(22.08.2022 07:38)
- Теряется смысл или нет, решать тебе, конечно. Но не стоит
недооценивать удобство кодинга, если оно действительно возникает
при отказе от макросов и переходе к битовым полям. Порой немного
пожертвовать размером кода ради этого вполне разумно. - SciFi(22.08.2022 12:54)
- Сделал ход конем!!! Aleksey_75(184 знак., 22.08.2022 20:49)
- Семён Семёныч! - SciFi(22.08.2022 20:50)
- Сделал ход конем!!! Aleksey_75(184 знак., 22.08.2022 20:49)
- Теряется смысл или нет, решать тебе, конечно. Но не стоит
недооценивать удобство кодинга, если оно действительно возникает
при отказе от макросов и переходе к битовым полям. Порой немного
пожертвовать размером кода ради этого вполне разумно. - SciFi(22.08.2022 12:54)
- смысл теряется, проще оставить все как есть - Aleksey_75(22.08.2022 07:38)
- 1) Переход с 32-разрядного контроллера на другое ядро? 2) А зачем знать положение бит? - VLLV(21.08.2022 22:58)
- Да какой там код )) Вот Aleksey_75(475 знак., 21.08.2022 20:50)
- 1. битовое поле задается не в "структуре", но в integral типе. 2.
Битовые поля идут в интегральном типе друг за другом, начиная с
LSB. 3. В структурных типах программист задает порядок следования
полей. 4. Задавая атрибуты, прагмой, опцией компиляции единицы
трансляции определяется упаковка и выравнивание структурных типов. - Oлeчкa(21.08.2022 20:07,
)
- а ссылку на первоисточник можно ??? жизнь показывает прямо
противоположное! - Aleksey_75(21.08.2022 20:19)
- Да не - вроде бы у Вас так же, только порядок бит в байте другой.
Но если Вы используете доступ только средствами С и без масок - то
по идее вас это не должно тревожить. А если и макросы используете -
то переписать их придётся - symbions(21.08.2022 21:00)
- т.е. поменять шило на мыло... смысл как раз был в том чтоб
отказаться от макросов и обращаться напрямую, но в тоже время
сохранить совместимость с старыми макросами - Aleksey_75(21.08.2022 21:05)
- Это как - отказаться от макросов и сохранить совместимость с
макросами? - symbions(21.08.2022 23:21)
- да все просто! эта структура участвует в обмене и на той стороне
может оказаться девайс с старой реализацией - Aleksey_75(22.08.2022 07:37)
- Ну при обмене и делай инверсию бит. Кстати - а в реализации УАРТа
нет смены порядка выдачи бит? symbions(190 знак., 22.08.2022 10:47)
- RBIT же у ARM. - lloyd(22.08.2022 13:08)
- Так может Алексея75-ого это и спасёт - symbions(22.08.2022 16:06)
- RBIT же у ARM. - lloyd(22.08.2022 13:08)
- Ну при обмене и делай инверсию бит. Кстати - а в реализации УАРТа
нет смены порядка выдачи бит? symbions(190 знак., 22.08.2022 10:47)
- да все просто! эта структура участвует в обмене и на той стороне
может оказаться девайс с старой реализацией - Aleksey_75(22.08.2022 07:37)
- Это как - отказаться от макросов и сохранить совместимость с
макросами? - symbions(21.08.2022 23:21)
- т.е. поменять шило на мыло... смысл как раз был в том чтоб
отказаться от макросов и обращаться напрямую, но в тоже время
сохранить совместимость с старыми макросами - Aleksey_75(21.08.2022 21:05)
- Да не - вроде бы у Вас так же, только порядок бит в байте другой.
Но если Вы используете доступ только средствами С и без масок - то
по идее вас это не должно тревожить. А если и макросы используете -
то переписать их придётся - symbions(21.08.2022 21:00)
- а ссылку на первоисточник можно ??? жизнь показывает прямо
противоположное! - Aleksey_75(21.08.2022 20:19)
- Маски! - VLLV(21.08.2022 16:23)
- так изначально и было, но это макросы, хотел сделать прямое обращение - Aleksey_75(21.08.2022 16:27)
- Используй 8051 и "мечтай о великом". - Costic(21.08.2022 15:00)
- а что непонятного, хочу сам задавать положение битового поля в
структуре, а не как компилятору вздумается - Aleksey_75(21.08.2022 13:37)