Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Вторник
22 апреля
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Средства и методы разработки
1389267
Топик полностью
VladislavS.
(02.01.2024 21:52, просмотров: 151)
ответил
IBAH
на
Достал меня ИАР, не адресует, падла, такую структуру
Поля сделайте uint32_t и всё будет норм.
Доступ к ValueY:
LDR.N R0,??DataTable2_1 LDR R0,[R0, #+0] LSLS R0,R0,#+2 LSRS R0,R0,#+24
Ответить
спасибо, помогло. sizeoff был 6, стал 4. Почему он мне варнинга никакого не дал?
-
IBAH
(02.01.2024 22:40
)
А какой ворнинг вы хотели? Вы же его попросили поля в байты паковать, он так и делал. Почему GCC команду pack воспринимает как упаковку до битов - вопрос. Ведь у pack параметр означает байты.
-
VladislavS.
(02.01.2024 22:47
)
Видимо да. "char" там всё и попортило т.к. размещение переменной разделилось между двумя байтами.
-
POV
(02.01.2024 22:02
)
Естественно. Он что можно по char упаковал, а настоящие char отдельно положил. Оптимизировал и sizeof(Result_t)==6 получил. А вот если его в uint32_t попросить всё утоптать, то будет желаемое sizeof(Result_t)==4.
-
VladislavS.
(02.01.2024 22:07
)
И не только размер не тот, но и порядок полей изменён ради этой упаковки в байты. Потому надо в одной переменной uint32_t поля выделять, чтобы оно полряд шло как олписано, если это куда-то передается (регистрации модбаса например битовыми полями представлен).
-
POV
(02.01.2024 22:12
)