ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1000494 Топик полностью
RxTx (30.04.2020 20:09, просмотров: 361) ответил 3m на Вы нам пересказали букварь. Теперь перескажите зачем стек (в первую очередь), структуры и функции на "толстых" процессорах включая arm размещают с выравниванием в разы превышающим разрядность процессора например 8, 16 или даже 64 байта тогда как для 32-х битного процессора достаточно выравнивания 4 байта.
Я не "нам" и не "пересказывал", у вас путаница по пьянке случилась. :))) Я отвечал на заданный вопрос конкретному человеку - топикстартеру. Чаще всего первейшая причина выравнивания больше чем ширина шины - align на линию кэша кода/данных. Затем идут регистры шире чем регистры ядра, например double и ALIGN 8. И наконец, специфичные случаи - выравнивание на страницы TLB и проч вспомогательные структуры и дескрипторы. Выше я забыл еще один важный случай - DMA-engine может 

потребовать отдельного выравнивания. И наконец, если интересуют "толстые процессоры" это последние архитектуры Intel Core / Amd с их затейливым механизмом предсказания переходов/фетчинга инструкций. Например у Sandy Bridge/Ivy Bridge align кода на 32, а Amd Bulldozer, SteamRoller, Piledriver, критические ф-ции (т.е. код) не должны начинаться близко к концу 32-байтного блока, при этом выравниваясь на 16-байтные границы. Оптимизация кода под процессоры, изучение архитектур и некогда- написание рекомпиляторов это было как моим хобби, так и работой.

Спасибо, князь. Вы настоящий дворянин. И программист.