Статическая цепь - Большая Энциклопедия Нефти и Газа, статья, страница 2
Сказки - это страшные истории, бережно подготавливающие детей к чтению газет и просмотру теленовостей. Законы Мерфи (еще...)

Статическая цепь

Cтраница 2


На основании выше сказанного мы приходим к самому прямому методу моделирования нелокальной среды: методу статической цепи. Предположим, что мы немного изменили таблицы локальной среды в стеке; каждая таблица теперь начинается со специального элемента, называемого указателем статической цепи. Этот указатель всегда содержит базовый адрес другой, лежащей ниже в стеке таблицы, которая представляет локальную среду ближайшего статически внешнего блока или подпрограммы в исходной программе.  [16]

17 Создание статической цепи при входе в программу. [17]

Метод статической цепи допускает простую реализацию входов в подпрограммы и выходов из них. Когда вызывается некоторая подпрограмма, следует поместить на стек таблицу ее локальной среды и указатель статической цепи, который указывает на локальную таблицу, расположенную в стеке где-то ниже. При выходе нужно только удалить из стека верхнюю локальную таблицу; никакие другие действия не требуются.  [18]

19 Изменение дисплея при входе в подпрограмму. [19]

Использование дисплея упрощает операцию обработки ссылки, однако вход и выход для подпрограмм при этом усложняются. Дисплей должен так изменяться при каждом входе и выходе, чтобы в любой момент отражать текущую активную статическую цепь.  [20]

Хотя теорема о постоянстве потокосцепления может быть успешно использована для нахождения начальных значений свободных токов, она не определяет скоростей их затухания. В линейных статических цепях, не содержащих емкости, свободные токи состоят из составляющих, каждая из - которых затухает по экспоненциальному закону.  [21]

Статическая цепь для Р включает только локальную таблицу для Р и старую цепь, начиная от В и ниже. Таким образом, при входе в Р содержимое дисплея от элемента для В до вершины должно быть сохранено и позднее восстановлено при выходе. Обычно эта частичная статическая цепь записывается в центральном стеке совместно с локальной таблицей для Q.  [22]

Необходимость прохождения статической цепи для каждой нелокальной ссылки является недостатком приведенного метода. В этом методе статическая цепь хранится отдельно от главного стека. Текущая статическая цепь записывается в специальный малый стек, называемый дисплеем. Дисплей содержит последовательность указателей на локальные таблицы в главном стеке. В любой момент времени выполнения в дисплее содержится такая же последовательность указателей, какая была бы в тот же момент в статической цепи при старом методе.  [23]

Во-первых, рассмотрим статическую цепь, которая начинается с локальной таблицы некоторой выполняющейся подпрограммы Q ( и поэтому находящейся на вершине стека) и идет вниз по стеку до таблицы главной программы. Заметим, что для любой подпрограммы Q длина этой цепи есть константа и не зависит ни от текущего размера стека, ни от точки вызова Q. Причина этого, конечно, в том, что длина статической цепи просто равна глубине вложенности определения подпрограммы Q в исходной программе. Эта глубина определена уже при трансляции и не меняется в ходе выполнения программы.  [24]

Рассмотрим теперь случай определения нелокальной среды посредством статической блочной структуры. Вспомним, что в этом случае нелокальная среда зависит от места определения подпрограммы в исходной программе. Примем, что для определения нелокальных сред ссылок во время выполнения используется механизм статической цепи. Когда Q передается R, как параметр, ее среда ссылок в момент передачи определяется статической цепью, соответствующей точке определения Q. Если передавать вместе с Q указатель на эту статическую цепь и восстанавливать этот указатель при вызове Q из R, то получается эффективный метод восстановления правильной нелокальной среды для Q. В процессе передачи параметров Q снова представляет собой пару ( указатель на команды, указатель среды), причем указатель среды указывает на таблицу локальной среды в точке определения Q. Эта таблица определяется в точности так же, как если бы Q вызывалась не из R, а из точки, где Q фигурирует в качестве параметра.  [25]

Когда процесс R создает локальную кучу SRO H, куча Н получает номер уровня, равный текущему счетчику уровней в стеке SRO процесса R. Заметим, что номера уровней - это не то же самое, что использующиеся в стековой архитектуре индексы отображений, которые обозначают лексические уровни. Номера уровней представляют длину динамической цепи, тогда как индексы отображений представляют длину статической цепи.  [26]

Указатели статической цепи служат основой простой схемы обработки ссылок. Обрабатывая ссылку на X, мы начинаем с текущей локальной среды на вершине стека. Если в локальной среде не найдено ассоциации для X, то мы переходим ко второй таблице согласно указателю статической цепи в исходной локальной таблице. Если и в этой таблице нет X, то мы продолжаем поиск, следуя указателям статической цепи, пока не найдем локальную таблицу, содержащую ассоциацию для X.  [27]

Для представления среды ссылок при выполнении В мы применим метод статической цепи из разд. Форматы этих таблиц показаны на рис. 6.15. Заметьте, что к каждой таблице добавлены еще два элемента: указатель статической цепи и адрес точки возврата. Возврат из подпрограммы эквивалентен переходу на этот параметр-метку, который в таблице локальной среды помечен Т. В. Для ясности в таблицы среды явно включены идентификаторы, хотя, как поясняется в разд. Алгола их присутствие не обязательно; обычно в явном виде идентификаторы не попадают в таблицу среды.  [28]

На основании выше сказанного мы приходим к самому прямому методу моделирования нелокальной среды: методу статической цепи. Предположим, что мы немного изменили таблицы локальной среды в стеке; каждая таблица теперь начинается со специального элемента, называемого указателем статической цепи. Этот указатель всегда содержит базовый адрес другой, лежащей ниже в стеке таблицы, которая представляет локальную среду ближайшего статически внешнего блока или подпрограммы в исходной программе.  [29]

Необходимость прохождения статической цепи для каждой нелокальной ссылки является недостатком приведенного метода. В этом методе статическая цепь хранится отдельно от главного стека. Текущая статическая цепь записывается в специальный малый стек, называемый дисплеем. Дисплей содержит последовательность указателей на локальные таблицы в главном стеке. В любой момент времени выполнения в дисплее содержится такая же последовательность указателей, какая была бы в тот же момент в статической цепи при старом методе.  [30]



Страницы:      1    2    3