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

Обработка - ссылка

Cтраница 2


В любой момент выполнения программы указатели статической цепи в стеке фактически накладывают на таблицы локальной среды структуру дерева, как это проиллюстрировано на рис. 6.11. В операции обработки ссылки мы всегда начинаем поиск ассоциации с одного из листьев дерева и перемещаемся в процессе поиска по ветвям в направлении к корню. Текущая локальная среда ( таблица на вершине стека) всегда является одним из листьев дерева, а именно с этого листа начинается поиск при обработке ссылки.  [16]

Например, ( CSETQ PI 3.141 6) присваивает атому PI глобальное значение 3.141 6, включая имя свойства APVAL и значение этого свойства 3.141 6 в список свойств PI. Правило обработки ссылок для атомов, используемых как переменные, формулируется следующим образом: прежде всего в списке свойств атома ищется свойство с именем APVAL, а затем с самого начала просматривается А-список и используется первая найденная ассоциация.  [17]

18 Простой метод моделирования сохраняемых локальных сред. [18]

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

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

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

Чтобы ассоциировать идентификатор с элементом данных или элементом программы, необходимо выполнить операцию, называемую именованием. Именование должно предшествовать ссылке, так как операция именования создает ассоциацию для идентификатора, тогда как операция обработки ссылки использует эту ассоциацию для поиска объекта, связанного с конкретным идентификатором.  [22]

Использование статической блочной структуры для определения неявной нелокальной среды подпрограммы ведет к усложнению и удорожанию необходимых во время выполнения механизмов моделирования. Обычно используемый метод моделирования основан на центральном стеке таблиц локальной среды, в конструкцию которого внесены некоторые изменения, чтобы обеспечить обработку ссылок в соответствии со статической блочной структурой исходной программы. Мы разберем здесь этот метод; остальные методы моделирования рассматриваются в упражнениях. Этот метод моделирования типичен для большинства реализаций Алгола и опирается на предположение, что локальные данные не сохраняются между вызовами подпрограмм.  [23]

В любой момент выполнения программы указатели статической цепи в стеке фактически накладывают на таблицы локальной среды структуру дерева, как это проиллюстрировано на рис. 6.11. В операции обработки ссылки мы всегда начинаем поиск ассоциации с одного из листьев дерева и перемещаемся в процессе поиска по ветвям в направлении к корню. Текущая локальная среда ( таблица на вершине стека) всегда является одним из листьев дерева, а именно с этого листа начинается поиск при обработке ссылки.  [24]

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

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

Основное правило передачи по имени можно сформулировать в терминах подстановки: прежде чем начнется выполнение подпрограммы, везде в ее теле соответствующий формальный параметр должен быть заменен на фактический параметр. Если формальным параметром в SUB является Y, то следует везде в SUB заменить Y на X перед выполнением SUB. Если X подставляется вместо Y, то необходимо также каким-то образом указать, что при обработке ссылки на X должна использоваться другая среда ссылок. Это как раз та проблема, которая возникает в общем случае передачи подпрограмм в качестве параметров и которую мы детально рассмотрим ниже.  [27]

Вычислим позицию соответствующего элемента таблицы, как базовый адрес смещение, где смещение - второй элемент пары. Обычно эти два шага объединяют в один, используя косвенную адресацию через элементы дисплея. Кроме того, часто удается поместить дисплей на время выполнения в быстрые регистры, что позволяет при обработке ссылки на идентификатор обойтись только одним обращением к памяти.  [28]

29 Простая таблица локальной среды для блока Алгола. [29]

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



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