Пытаюсь понять выравнивание данныхC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Пытаюсь понять выравнивание данных

Сообщение Anonymous »

По сути, я изо всех сил пытаюсь понять выравнивание данных. Я не понимаю, почему, например, в 64-битной архитектуре важно хранить 4-байтовые данные по адресам, кратным адресам 0x0, 0x4, 0x8, 0xC. Начинается ли выборка ЦП с каждого размера, кратного размеру слова (здесь это 8 байт)? и почему 2-байтовые данные должны храниться по адресам 0x0, 0x2, 0x4, 0x6, 0x8, 0xA, 0xC, 0xE? ЦП может за один такт загрузить 2-байтовые данные, даже если они хранятся по адресу 0x1... Так почему же они должны быть по адресу 0x0, 0x2, 0x4, 0x6, 0x8, 0xA, 0xC, 0xE.
Плюс, если строка кэша ЦП составляет, например, 64 байта, например, почему я должен заботиться о выравнивании данных, если данные не перекрываются между адресами 0x...00 и 0x...40 ?
это сбивает с толку...

Подробнее здесь: https://stackoverflow.com/questions/793 ... alignement
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»