-
- 1. С какого перепуга, если ядро не читает 8 байт за раз, а только 4
байта? 2. Не очень понятен процесс компиляции, в одном файле с этим
типом нет массива структур, в другом есть массив структур - как они
договариваются? - VLLV(30.04.2020 18:09)
- А какая связь вообще с байтами? Ты знаешь как оно внутри работает?
Может найтись масса неочевидных причин, почему иметь "некруглые"
адреса сложно. Пусть и читает по 4 байта за раз, но чтоб по 4 байта
считать длинное значение, long long, long double, вектор, и
обработать его последоательно нужно уметь вычитывать его отдельные
части. И куда проще это делать с выравненного адреса -- потому, что
достаточно правильным образом замаскировать младшие биты адреса, а
с fk0(723 знак., 30.04.2020 18:26)
- Убедил. Навскидку потери памяти с таким выравниванием не сильно
большие, должно жить. - VLLV(30.04.2020 18:35)
- В спортивном программировании вместо массивов структур лучше
"транспонировать" их в разнотипные массивы данных: во-первых места
займёт меньше, во-вторых адресация данных в коде станет более
эффективной. Пример: fk0(573 знак., 30.04.2020 18:47)
- Компромиссы в структурировании (а следовательно, и строгой типизации) недопустимы, товарищ ! - VLLV(30.04.2020 21:59)
- Может дать эффект только если полей мало. Иначе окажется что в процессоре ry и rz, подходящих для такой адресации очень мало, и для работы с одним элементом из массива потребуется частая перегрузка ry и rz. - AlexBi(30.04.2020 19:02)
- В спортивном программировании вместо массивов структур лучше
"транспонировать" их в разнотипные массивы данных: во-первых места
займёт меньше, во-вторых адресация данных в коде станет более
эффективной. Пример: fk0(573 знак., 30.04.2020 18:47)
- Убедил. Навскидку потери памяти с таким выравниванием не сильно
большие, должно жить. - VLLV(30.04.2020 18:35)
- Вроде бы в EABI такое записали. Иногда ссылаются на LDRD, STRD.
Можно ещё сослаться на Cortex-M7 и 64-разрядную шину AXI. В общем,
при желании причины найдутся. - SciFi(30.04.2020 18:09)
- Спасибо, начинает проясняться. In ARMv5TE, or in ARMv6 when SCTLR.U is 0, LDRD and STRD doubleword data transfers must be eight-byte aligned. Правда, у меня всего лишь STM32L4, а он CM4, правда есть FPU. - VLLV(30.04.2020 18:16)
- А какая связь вообще с байтами? Ты знаешь как оно внутри работает?
Может найтись масса неочевидных причин, почему иметь "некруглые"
адреса сложно. Пусть и читает по 4 байта за раз, но чтоб по 4 байта
считать длинное значение, long long, long double, вектор, и
обработать его последоательно нужно уметь вычитывать его отдельные
части. И куда проще это делать с выравненного адреса -- потому, что
достаточно правильным образом замаскировать младшие биты адреса, а
с fk0(723 знак., 30.04.2020 18:26)
- 1. С какого перепуга, если ядро не читает 8 байт за раз, а только 4
байта? 2. Не очень понятен процесс компиляции, в одном файле с этим
типом нет массива структур, в другом есть массив структур - как они
договариваются? - VLLV(30.04.2020 18:09)