По сути, я изо всех сил пытаюсь понять выравнивание данных. Я не понимаю, почему, например, в 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