Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

arx230910

.pdf
Скачиваний:
25
Добавлен:
11.05.2015
Размер:
2 Mб
Скачать

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

Пример такого подхода представлен на рис. 9.9. В этом примере предполагается, что в подпрограмме Р объявлены локальные переменные XI и Х2, а в подпрограмме Q, которая может быть вызвана из Р, объявлены локальные переменные У1 и Y2. На рисунке показано, что точкой возврата для каждой подпрограммы является первый элемент соответствующего стекового кадра". Далее в стеке (т.е. в ячейке, расположенной ближе к вершине стека) находится указатель на начало предыдущего стекового кадра. Это необходимо на случаи, если количество и длина списка параметров в стеке будут переменными.

Рис. 9.9. Изменение содержимого стека при вызове подпрограмм Р и Q: а — выполняется подпрограмма Р; б — подпрограмма Р вызвала подпрограмму Q.

При составлении программы вычисления арифметических выражений для таких ЭВМ используют Польскую Инверсную (бесскобочную) Запись (ПОЛИЗ) выражений. В ПОЛИЗе операция записывается не между операндами (X+Y), а после них (XY+).

Подобные выражения можно вычислять по следующему алгоритму:

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

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

71

ции;

3)если после выполнения пункта 2) формула состоит из одного значения, это значение и есть результат, то есть алгоритм завершен, в противном

случае перейти к пункту 1).

Пример использования такого алгоритма для вычисления по формуле

Y = (А + В • С)/(Е - F),

преобразованной в формулу ABC -+EF-/, (*)

приведен в нижеследующей таблице. Для определенности в ней выбраны следующие числовые значения операндов: А=8, В=2, С=5, Е=6 и F=4.

Шаг

Формула, подле-

Левый

Операнды

Результат

Новая формула после

 

жащаярасчету

знак

 

 

выполненияоперации

1

825 +64 - /

 

2 и5

10

810 + 64 - /

2

8 10 + 64 - /

+

8 и 10

18

1864 - /

3

1864 - /

-

6 и4

2

182 /

4

182/

/

18и2

9

9

Бесскобочная запись является идеальной для проведения вычислений на ЭВМ со стековой организацией.

На рис. 19. изображен расчет выражения (*) с использованием стека

Рис. 19. Пример использования стека для вычисления выражений Предполагается, что при работе со стеком на рис. 19. используются

следующие команды:

PUSH <ад> - загрузка в стек содержимого ячейки с адресом <ад.>, POP <ад> - выгрузка из стека в память по адресу <ад.>,

MUL - умножение содержимого двух верхних ячеек стека,

ADD - сложение содержимого двух верхних ячеек стека,

SUB - вычитание содержимого двух верхних ячеек стека,

DIV - деление содержимого двух верхних ячеек стека.

Заметим, что структуры реальных процессоров являются смешанными, то есть позволяют моделировать все указанные выше виды структур.

72

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]