Реферат: Распределение памяти
│ Описатель 0 = действительный, 1 = целый, 2 = булевый и т.д. │
├──────────────────────────────────────────────────────────────┤
│ Адрес значения ( или само значение ) │
└──────────────────────────────────────────────────────────────┘
Если в процедуре есть обращение к формальному параметру,
процедура должна запрашивать или интерпретировать этот описатель
и затем выполнить любое необходимое преобразование типа. Эти
действия можно, конечно, выполнить, обращаясь к другой программе.
Во многих случаях компилятор не может выделитъ память для
значений переменных, так как неизвестны атрибуты размерности.
Так происходит с массивами в АЛГОЛе. Все, что компилятор может
сделать, - это выделить память в области данных для описателя
фиксированной длины, описывающего переменную. Во время
выполнения программы, когда станут известны размерности, будет
вызвана программа GETAREA ( которая чаще всего является функцией
операционной системы ), которая выделит память и занесет в
описатель адрес этой памяти. При этом ссылка на значение всегда
выполняется с помощью такого описателя.
Для структур или записей требуются более сложные описатели,
в которых указывается, как связаны между собой компоненты и
подкомпоненты. Эти механизмы будут рассмотрены ниже.
Чем больше атрибутов могут меняться при счете, тем больше
приходится выполнять работы во время счета.
3. Память для данных элементарных типов
Типы данных исходной программы должны быть отображены на
типы данных машины. Для некоторых типов это будет соответствием
один к одному ( целые, вещественные и т. д. ), для других могут
понадобиться несколько машинных слов. Можно отметить следующее:
1) Целые переменные обычно содержатся в одном слове или