ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
267177 Топик полностью
ыыыы (15.08.2011 15:20, просмотров: 1) ответил мохоноги на Я рассматриваю вопрос работы не компилятора исходников, а компоновщика объектных файлов (линкера). В различных скриптах для ld, предназначенных для компоновки кода под Cortex-M3, я встречал вызовы ALIGN(4)/ALIGN(8). Вот и возник вопрос: а почему
на практике ALIGN(8) встречается для работы с .data .bss, если проц умеет long long-ами (64 бит) работать, то процедуры инициализации (crt0 и т.п., что работает до вызова main()) обычно делают через ldd/std, соответственно нужно выравнивание на 8, то же и для FPU double. поэтому секции линкеру рекомендуется выравнивать на 8. при выравнивании на 4 экономия памяти микроскопическая, но внезапно можно поиметь глюк. ну и стек фрэйм (fp, куда при вызове кладется prev. sp) выравнен во всех приличных архитектурах на 8