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

Среда - ссылка

Cтраница 1


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

Однако полная среда ссылок, базирующаяся на статической структуре программы, также должна программно моделироваться на традиционных ЭВМ. Хотя такие методы, как дисплеи, позволяют это делать довольно эффективно, во время выполнения программ на Алголе неизбежны значительные издержки по сравнению, например с Фортраном, в котором используются структуры прямой обработки ссылок.  [2]

В результате среда ссылок состоит из трех активных ассоциаций для идентификаторов: х, у и А.  [3]

4 Форматы таблиц локальной среды для программы, приведенной на. [4]

Для представления среды ссылок при выполнении В мы применим метод статической цепи из разд.  [5]

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

Чтобы хранить во время выполнения среды ссылок ( ассоциации идентификаторов), например Л - списки в Лиспе, может потребоваться значительный объем памяти. В некоторых языках, например в Фортране, для этих целей требуется немного памяти либо вовсе никакой.  [7]

Для того чтобы выделить в среде ссылок ассоциации, которые создаются в результате последнего изменения среды ссылок, используют понятие локальной среды ссылок. Под локальной средой ссылок понимают ту часть среды ссылок, которая была создана в результате последнего вхождения в блок или в подпрограмму. Остальную часть среды ссылок называют нелокальной средой ссылок. В последнем примере перед первым оператором печати print ( х, у) локальная среда ссылок состоит из двух ассоциаций, связывающих идентификаторы х, z с целыми переменными; нелокальная среда ссылок состоит из двух ассоциаций, связывающих идентификатор у с целой переменной и идентификатор А с вещественным массивом.  [8]

Этот метод допускает единообразную трактовку проблем среды ссылок для параметров, передаваемых по имени, и для параметров, являющихся подпрограммами. Всякий раз, когда в подпрограмме встречается ссылка на формальный параметр, соответствующий фактическому параметру, передаваемому по имени, выполняется санк, скомпилированный для этого параметра; он вычисляет фактический параметр в соответствующей среде ссылок и возвращает результирующее значение ( или адрес) в качестве значения санка.  [9]

Ссылка на определенную ассоциацию имен ( среду ссылок), которая остается активной все время выполнения программы.  [10]

При изучении управления данными оказывается полезным понятие среды ссылок. В любой момент выполнения программы имеется определенное множество активных ассоциаций идентификаторов. Это множество активных ассоциаций и называется средой ссылок в данной точке программы. Именно среда ссылок определяет для каждой встретившейся ссылки соответствующую ей ассоциацию. Операции именования, разыменования, активирования и деактивирования изменяют среду ссылок.  [11]

На каждом из этих шагов нужно изменять среду ссылок. На рис. 6.16 изображены среды ссылок, действующие между любыми двумя соседними шагами. Заметим, что, когда процедура или метка передается новой активации подпрограммы в каче-стве параметра, передается также указатель на локальную таб-лицу, в которой была найдена ассоциация для фактического параметра. Например, на шаге 2 в качестве фактического параметра Р передается QHUM, а также указатель на локальную таблицу В, в которой имеется ассоциация для Q. На шаге 3, когда Р вызывает QHUxc через формальный параметр X, указатель статической цепи в таблице для ( ниж можно установить так, чтобы он указывал на таблицу В, создавая тем самым нужную для выполнения Qh m нелокальную среду. Читателю рекомендуется для каждого шага самостоятельно определить: каким образом можно перейти от предыдущей среды к следующей, имея только эту предыдущую среду; форматы таблиц, показанные на рис. 6.15; и выполняемую инструкцию программы. Заметим, что текущая локальная среда на каждом шаге задается специальным указателем головы статической цепи ( ГСЦ), который хранится в фиксированном месте. Чтобы яснее показать различные среды ссылок в разные моменты выполнения, мы использовали представление в виде дерева, а не непо средственно стековую структуру. Заметим, что локальные таблицы уничтожаются в порядке, строго обратном порядку их со-здания, и поэтому можно создавать и уничтожать таблицы, помещая их в единственный стек.  [12]

13 Среда ссылок в виде А-списка, содержащего ассоциации для L, Z. [13]

А-список ( список ассоциаций) представляет собой среду ссылок. А-список - это обычный список Лиспа, каждый элемент которого является указателем на слово, представляющее идентификатор ( атом) и его текущую ассоциацию. Эти пары являются элементами списка, в которых поле CAR указывает на атом, а поле CDR - на значение ( список, атом или число), связанное с этим атомом.  [14]

Основным результатом использования центральной таблицы цепочек для представления среды ссылок является то, что нелокальные ссылки подчиняются правилу последней ассоциации. При входе в подпрограмму текущие ассоциации для всех локальных идентификаторов деактивируются, при выходе они восстанавливаются; все же остальные идентификаторы сохраняют существующие ( и, следовательно, последние) ассоциации.  [15]



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