Здравствуйте, Sergei I. Gorelkin, Вы писали:
SIG>ядро Cortex-M0 не допускает невыровненный доступ, а Cortex-M3 — имеет бит в одном из регистров, определяющий, допускать или нет.
Как я понимаю, из пользовательского приложения под виндой это не должно быть доступно, а глобально менять эти режимы из драйвера ядра должно быть запрещено соглашениями. Каковы свойства тех ARM'ов, на которых работает Win8/10/11? Нужно ли мне переделывать весь код на эти ограничения, или можно исходить из того, что на том железе их нет?
SIG>Так что лучше всего обеспечить выравнивание самостоятельно. Оно и на x86 будет работать быстрее.
Речь про выравнивание не полей структур, а потоков данных. Например, мой код работает со звуковыми потоками, которые могут быть одно-, двух-, трех- и четырехбайтовыми. На x86 чтение/запись двухбайтового слова по нечетному адресу всяко не медленнее, чем сборка/разборка по байтам, поэтому я использую указатели на WORD для 16-разрядных отсчетов, и комбинации WORD/BYTE — для 24-разрядных.