ЦП и выравнивание данных
Извините, если вы чувствуете, что на это отвечали много раз, но мне нужны ответы на следующие вопросы!
Почему данные должны быть выровнены (на границах 4 байта / 8 байтов / 2 байта)? Здесь я сомневаюсь, что если у процессора есть адресные линии Ax Ax-1 Ax-2 ... A2 A1 A0, то вполне возможно последовательно обращаться к ячейкам памяти. Так почему же необходимо выровнять данные по конкретным границам?
Как найти требования к выравниванию, когда я компилирую свой код и генерирую исполняемый файл?
Если, например, выравнивание данных имеет 4-байтовую границу, означает ли это, что каждый последующий байт расположен по смещению по модулю 4? Я сомневаюсь, что если данные выровнены на 4 байта, значит ли это, что если байт находится на 1004, то следующий байт на 1008 (или на 1005)?