Директива $A Pascal-Паскаль
Описание
$A: Байтовое выравнивание данных - переключает между байтовым выравниванием и выравниванием по словам переменных и типизированных констант.
Синтаксис: | {$A+} или {$A-} |
---|---|
Значение по умолчанию: | {$A+} |
Тип: | Глобальная |
Команда меню: | Options|Compiler|Align Data |
Состояние $A+:
В состоянии $A+, все переменные и типизированные константы размером больше 1-го байта располагаются по четным адресам.
При необходимости, между переменными могут быть вставлены неиспользуемые байты, для достижения выравнивания по словам.
Режим $A+ не влияет на переменные размером 1 байт, поля записей или элементы массивов.
Поле в записи будет выровнено по словам только в том случае, если полный размер всех полей до него является четным.
Чтобы каждый элемент массива был выровнен по словам, размер элементов массива должен быть четным.
Состояние $A-
В состоянии $A-, выравнивание не происходит.
Переменные и типизированные константы просто помещаются в следующий доступный адрес памяти, независимо от их размера.
Замечания:
- Выравнивание по словам не дает эффекта на процессорах 8088.
- На всех процессорах 80x86 выравнивание по словам задает более быстрое выполнение.
- К данным размера "слово" (2 байта) по четным адресам можно обратиться за один цикл памяти.
- К данным на нечетных адресах можно обратиться за два цикла памяти.
ВНИМАНИЕ:
Независимо от состояния $A, каждый раздел описания глобальных переменных и констант всегда начинается на границе слов.
Компилятор всегда хранит указатель вершины стека (SP) выровненным по словам,распределяя дополнительный неиспользуемый байт в записи активации процедуры если это требуется.