ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
2 мая
1219694 Топик полностью
VladislavS. (30.06.2022 20:21, просмотров: 254) ответил VVB на Прошу помощи зала по GCC
Отсюда ответы: 

> 1. почему линкер не выравнивает переменные, размера меньше чем слово, по адресу, кратному слову?

А зачем? Память лишняя что-ли?


>2. как заставить линкер производить выравнивание адреса размещения переменных внутри одного модуля по границам слова, хотя бы для ускорения доступа к этим переменным?

Каким образом это ускорит доступ? В системе команд ARM есть байтовый доступ по любому адресу.


>3. как заставить линкер производить выравнивание адреса размещения переменных при переходе к другому модулю?

Наверное, использовать атрибуты выравнивания для данных.


>4. что за херня? как эта дурацкая опция влияет на генерирование кода с невыровненным адресом переменных модулей?

Оптимизация... Экономим на всём, в том числе и памяти.


>5. предполагаю, что имеется ошибка в GCC: работающий код может думать, что переменная размещена по выровненному адресу, а реально она находится по невыровненному

Код не может думать. Думать может программист написавший его и, вероятно, допустивший ошибку. Смотрите код, работающий с этими переменными. С большой долей вероятности ошибка там.


Боюсь, что это будет очередным доказательством, что оптимизация - лучший проявитель кривого кода.