Команды для вычисления и вызова функции | MetodPro.ru

Реклама на сайте

Команды для вычисления и вызова функции


AP

RTN

Когда определенная пользователем функция применяется к ее аргументам, значение этих аргументов размещаются в окружении как подсписки так, что они доступны в теле функции через команду LD. Вычисление функции выполняется путем вызова ее замыкания и применения его по средствам команды append. При этом замыкание должно находиться непосредственно над списком фактических параметров в стеке S.

Команда append формирует вычислительную обстановку и помещает код  из замыкания в список управления для последующего выполнения. Регистр D используется для сохранения содержимого остальных трех регистров так, чтобы оно могло быть восстановлено командой RTN, которая будет находиться в конце списка управления, взятого из замыкания. Правило перехода

((c’.e’) v.s) e (AP.c) d -> ( ) (v. e’) c’ (sec.d)

Команда Ap требует, чтобы элемент в вершине стека был замыканием, а второй элемент (v) – списком  фактических параметров для вызывающей функции, которая, в свою очередь, представлена замыканием. Предварительно sec размещается в d, т.е. целиком сохраняется состояние secd машины, которое было до выполнения команды AP. Вычисление функций начинается с занесения списка команд c’ в регистр с. Команда RTN возвращает secd машину к состоянию, хранимому в регистре d. Правило перехода имеет вид.

(x) e’ (RTN) (sec.d) -> (x.s) e c d

Шаг

s

e

c

d

1)

s

e

(LDC NIL LDC 5 CONS LDF (LD (0 0) LDC 1 ADD RTN) CONS

 LDF (LDC NIL LD (0 1) CONS LD (0 0) AP RTN) AP STOP)

d

2)

((5). s)

e

(LDF (LD (0 0) LDC 1 ADD RTN) CONS

 LDF (LDC NIL LD (0 1) CONS LD (0 0) AP RTN) AP STOP)

d

3)

([(LD (0 0) LDC 1 ADD RTN) e] (5). s)

e

(CONS

 LDF (LDC NIL LD (0 1) CONS LD (0 0) AP RTN) AP STOP)

d

4)

(([(LD (0 0) LDC 1 ADD RTN) e] 5). s)

e

(LDF (LDC NIL LD (0 1) CONS LD (0 0) AP RTN) AP STOP)

d

5)

([(LDC NIL LD (0 1) CONS LD (0 0) AP RTN) e] ([(LD (0 0) LDC 1 ADD RTN) e] 5). s)

e

(AP STOP)

d

Шаг

s

e

c

d

6)

()

( ([(LD (0 0) LDC 1 ADD RTN) e] 5) )

(LDC NIL LD (0 1) CONS

LD (0 0) AP RTN)

(s e (STOP). d)

7)

((5))

( ([(LD (0 0) LDC 1 ADD RTN) e] 5) )

(LD (0 0) AP RTN)

(s e (STOP). d)

8)

( [(LD (0 0) LDC 1 ADD RTN) e] (5) )

( ([(LD (0 0) LDC 1 ADD RTN) e] 5) )

(AP RTN)

(s e (STOP). d)

9)

()

((5))

(LD (0 0) LDC 1 ADD RTN)

( () ( ([(LD (0 0) LDC 1 ADD RTN) e] 5) ) (RTN) s e (STOP). d)

10)

(5)

((5))

(LDC 1 ADD RTN)

( () ( ([(LD (0 0) LDC 1 ADD RTN) e] 5) ) (RTN) s e (STOP). d)

11)

(6)

((5))

(RTN)

( () ( ([(LD (0 0) LDC 1 ADD RTN) e] 5) ) (RTN) s e (STOP). d)

12)

(6)

( ([(LD (0 0) LDC 1 ADD RTN) e] 5) )

(RTN)

(s e (STOP). d)

13)

(6. s)

e

(STOP)

d

14)

(6. s)

e

(STOP)

d









Рисунок 7.6 – Последовательность переходов SECD-машины при вычислении программы (см методу)))



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем