Что такое выравнивание областей выполнения и входных секций?

Сегодня я наткнулся на код, похожий на следующий, и мне интересно, что на самом деле происходит:

#pragma pack(1)
__align(2) static unsigned char multi_array[7][24] = { 0 };
__align(2) static unsigned char another_multi_array[7][24] = { 0 };
#pragma pack()

При поиске упоминания ключевого слова __align в компиляторе Keil я наткнулся на следующее:

Выравнивание областей выполнения и секций ввода Бывают ситуации, когда вы хотите выровнять секции кода и данных... Если у вас есть доступ к исходному коду, вы можете сделать это во время компиляции с помощью ключевого слова __align(n)...

Я не понимаю, что подразумевается под "выравниванием секций кода и данных". Кто-нибудь может прояснить, как происходит это выравнивание?

6
задан embedded_guy 4 January 2012 в 19:11
поделиться