Типизированные константы

Читать скрытый байт строковой переменной MyStr, в

Абсолютные переменные.

Память.

Объявления переменных

Var

Alpha,Beta:My_Proc;

Procedure BuildGraph(x0,x1:Real; Func:MathFunc);

Максимальный размер сегмента глобальных данных – 65 520 байт. При необходимости иметь больший объем глобальных данных следует делить программу на модули – каждому модулю предоставляется собственный сегмент данных. Размер стека (локальных данных) может задаваться в пределах от 1024 байта до 65520 байтов. По умолчанию 16384 байта. Задать размер стека можно директивой компилятора $M. Размер каждой переменной в динамической памяти типа "куча" не должен превышать 65 520 байтов,. т.е., одного адресного сегмента за вычетом нескольких байтов управляющего блока.

<абсолютная переменная>::=<имя> ":" <тип> "Absolute" (<целое без знака> ":" <целое без знака>|<имя переменной>).

Если после слова Absolute указаны два целых без знака, то переменная размещается по абсолютному адресу, указанному этими двумя числами, причем, первое задает адрес начала сегмента, а второе – смещение относительно начала сегмента. Значения этих чисел должны быть в пределах от $0 до $FFFF.

Если после слова Absolute указано имя переменной, то физический адрес начала размещения в памяти новой переменной будет совпадать с адресом начала размещения в памяти указанной переменной (она должна быть описана ранее).

Примеры:

Var IntVector: array [0..1024] of byte absolute 0:0;

{этот массив позволяет обращаться к байтам области

векторов прерываний системы MS DOS}

MyStr:String[40];

MyStrLen:byte absolute MyStr; {Эта переменная позволяет

котором находится текущая длина строки}

По своей сути – это переменные, которым присваивается начальное значение в момент запуска программы.

В отличие от обычных констант, которым значение присваивается также в момент запуска программы, и далее не может изменяться, значение типизированных констант можно изменять в ходе работы программы, то есть, можно пользоваться ими как обычными переменными.

Такие константы объявляются в разделе Const и содержат описания типа (как при объявлении переменных) и описания значений (как при объявлении обычных констант). Но обычные константы могут быть только одного из простых типов, а типизированные константы могут быть сложного типа.

<объявление типизированной константы>::= <имя> ":" <тип> "=" <значение>.

Тип может быть задан именем или описанием конструкции типа.

Следует учитывать, что переменные и типизированные константы, описанные с одинаковой конструкцией типа, но в разных описаниях, считаются относящимися к разным типам данных. Поэтому в описании типизированных констант рекомендуется использовать имя типа. Для этого перед разделом Const с описаниями типизированных констант нужно поместить раздел Type, в котором описать нужные типы, а затем уже описывать константы и переменные этих типов. Тогда все переменные и константы, описанные с одинаковым именем типом, будут относиться к одному типу, и будут совместимыми по присваиванию и операциям, допустимым для данных типов.

Локальные типизированные константы (объявленные внутри процедур и функций) являются статическими локальными переменными. То есть, память для них выделяется на все время работы программы, а не только на время работы процедуры или функции. В них при необходимости можно сохранять информацию до следующего вызова процедуры или функции. Но при этом они недоступны извне процедуры или функции.

Объявления значений типизированных констант могут включать в себя константные выражения, как при объявлении обычных констант. Кроме того, они могут включать в себя адресные константные выражения, состоящие в вычислении адреса, сегмента или смещения глобальной переменной, другой типизированной константы, процедуры или функции.

Типизированные константы не могут входить в константные выражения (за исключением адресных константных выражений), так как по сути они являются переменными.

Примеры с комментариями


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: