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

Стек - операнд

Cтраница 2


Но стек используется не только для хранения локальных переменных, а также и для хранения операндов во время вычисления арифметических выражений. Такой стек называется стеком операндов.  [16]

Если имя представляет оператор или процедуру, определяемую пользователем, известную ПостСкрипту, оператор выполняется, как только будет выполнен грамматический разбор. Если имя представляет данные, то они выталкиваются в стек операндов. Тем не менее, если имени предшествует символ / ( наклонная черта вправо), то оно рассматривается как данные ( литерал) и выталкивается в стек операндов. Префикс / используется для использования имен, например, в качестве аргументов в операторах и процедурах.  [17]

Во время исполнения команд, вычисляющих значения выражений, значения записываются и считываются со стека операндов. Стоит отметить, что в командах системы 1432 указатели данных на стек операндов очень короткие; это означает, что оттранслированные последовательности команд системы i432, которые интенсивно используют стек, очень компактны. Однако в этой книге мы не обсуждаем подробнее форматы команд и последовательности команд системы i432, вычисляющие значения выражений.  [18]

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

Как показывает рис. 4.10, существуют три основных области данных, первая из которых фиксирована при проектировании архитектуры и содержит пять ключевых полей. Ниже перечислены и кратко описаны части первой области данных: 1) состояние контекста, 2) указание стека ( SP), 3) индекс текущего объекта команды, 4) указатель команды ( IP) - в разрядах, 5) область данных управления трассировкой, 6) рабочая память, 7) стек операндов. Ниже приведено краткое объяснение этих элементов.  [20]

Очень важно понимать, что происходит, когда выполняется такая строка. Сначала интерпретатор рассматривает операторы как данные в процессе, называемом косвенным исполнением. Символ наклонной черты / указывает на то, что за ним следует литеральный объект ( данные), следовательно, имя выталкивается в стек операндов. Вложение операторов в фигурных скобках приводит к тому, что при первом чтении они рассматриваются подобно массиву данных; следовательно, они выталкиваются на стеке операнда. Затем оператор def выталкивает все эти объекты из стека операндов и создает элемент в словаре пользователя.  [21]

Если имя представляет оператор или процедуру, определяемую пользователем, известную ПостСкрипту, оператор выполняется, как только будет выполнен грамматический разбор. Если имя представляет данные, то они выталкиваются в стек операндов. Тем не менее, если имени предшествует символ / ( наклонная черта вправо), то оно рассматривается как данные ( литерал) и выталкивается в стек операндов. Префикс / используется для использования имен, например, в качестве аргументов в операторах и процедурах.  [22]

Оператор читает пары символов ASCII как шестнадцатиричные числа и преобразовывает их в 1-байтовые бинарные значения. Длина строки не является критичной величиной до тех пор, пока она не превышает bit / sample; данные будут читаться до тех пор, пока строка не будет заполнена или не будет встречен конец файла. Этот оператор выталкивает два результата в стек операндов: результирующая строка двоичных данных и логическое значение. Логическое значение истина будет установлено, если достигнут конец файла.  [23]

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

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



Страницы:      1    2