Эквивалентность типов данных. Ассоциации наименований объектов (пространства имен), страница 2

Среды ссылок периода исполнения

Варианты организации памяти исполняемой программы:

Процедуры и

статические данные

Куча

Свободная память

 


Стек

а)

Процедуры

Статические данные

Стек

Свободная память

 


Куча

б)

Статические данные

Процедуры

Область подгрузки

Куча

…

 

Свободная память

 


Стек

в)

Активация процедуры

1.  Формирование адреса точки входа в вызываемую процедуру (возможно – в результате подгрузки dll).

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

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

4.  Сохранение содержимого регистров процессора.

5.  Формирование и сохранение адреса возврата.

6.  Собственно вызов процедуры, т.е. передача управления в ее точку входа.

7.  Создание локальных объектов (выделение памяти для их размещения).

8.  Выполнение процедуры, т.е. обработка значений фактических параметров, протекающая путем

·  формирования и использования значений локальных объектов;

·  формирования и последующего использования результатов промежуточных вычислений;

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

·  использования, и, возможно, модификации значений статических данных программы.

9.  Формирование и сохранение значения возвращаемого результата.

10.  Уничтожение объектов, созданных исключительно для выполнения данной активации процедуры.

11.  Прямоугольная выноска: Для динамического доступа к нелокальным данным (связывание во время выполнения)Восстановление содержимого сохраненных регистров процессора.

12.  Возврат из процедуры – передача управления в ту точку вызывающей процедуры, адрес которой сформирован на шаге 3.

Запись активации процедуры

Прямоугольная выноска: Для «текстуального» доступа к нелокальным данным (связывание во время трансляции)
 


Результаты промежуточных вычислений

Локальные данные

Регистры процессора

Связь по доступу (необязательная)

Связь по управлению (необязательная)

Фактические параметры

Возвращаемое значение



–

А1

…

t0

–

В1

А1

…

t1

–

А2

В1

А1

…

t2

–

В1

А1

…

t3

–

А3

В1

А1

…

t4

–

В1

А1

…

t5

–

А1

…

t6

–

В2

А1

…

t7


Вызывающие последовательности

Прямоугольная выноска: Запись активации вызываемой процедуры

…