-
- А теперь представь, что "проверка адреса" выехала в compile time (чтоб как раз не тратить на неё время, о чём ты пишешь) и всё становится логично. Адреса в момент компиляции может и неизвестны, но их атрибуты (выравнивание) берутся из типов и известны. - fk0(24.07.2020 11:32)
- C " ВСЕГДА" не согласен (от того и пострадамши :) Выравниваю для
контроллеров, в которых это требуется - для того же MSP430. Для
ARM7TDMI тоже бы учел. Но тут, млять, Cortex M3, аффтары которого с
момента появления били себя пяткой в грудь, что поддерживается
побайтный доступ, и x86 c Паскалем на другом конце. И до каких то
пор это было без извратов - есть стандарт для memcpy() и приведения
указателей. В том же Keil v5, если использовать библиотеку
"microLIB", все пучком - Гyдвин(27 знак., 24.07.2020 09:01)
- Ещё раз -- ты работаешь не с контроллером "Cortex M3", а с некой
абстрактной моделью вычислительной машины заданной стандартом
языка. И в этой модели про невыравненный доступ сказано --
поведение неопределено. Более того, на твоём кортексе M3 оно тоже
вызывает улёт в hard fault. Поддержка побайтного доступа требует
совершенно других машинных команд (и работать всё будет в 4 раза
медленее). - fk0(24.07.2020 11:34)
- Вот и буду продолжать компилить версией 4.54 от 12 года, в которой хоть и "работать всё будет в 4 раза медленее", используя соответствующие команды, но без лишних выебонов в библиотеках. И более ранняя версия MDK ARM тоже работала корректно - правильная "абстрактная модель вычислительной машины заданная стандартом языка" (проект был запущен лет 10 назад)... - Гyдвин(24.07.2020 12:02)
- ВСЕГДА - потому что те же структуры могут переехать на другой
процессор например с M3 на M0. На M0 будет больно. - 3m(24.07.2020 10:34)
- Не переедут - зуб даю ;) В проекте 12..15 тыс. строк кода намертво
срощенного с периферией LPC17... - Гyдвин(24.07.2020 10:44)
- Звучит как профессиональные грабли.... - Evgeny_CD(24.07.2020 11:49)
- Нет, любительские... - fk0(24.07.2020 11:57)
- Звучит как профессиональные грабли.... - Evgeny_CD(24.07.2020 11:49)
- Не переедут - зуб даю ;) В проекте 12..15 тыс. строк кода намертво
срощенного с периферией LPC17... - Гyдвин(24.07.2020 10:44)
- Ещё раз -- ты работаешь не с контроллером "Cortex M3", а с некой
абстрактной моделью вычислительной машины заданной стандартом
языка. И в этой модели про невыравненный доступ сказано --
поведение неопределено. Более того, на твоём кортексе M3 оно тоже
вызывает улёт в hard fault. Поддержка побайтного доступа требует
совершенно других машинных команд (и работать всё будет в 4 раза
медленее). - fk0(24.07.2020 11:34)