Программирование на языках высокого уровня: Методические указания к выполнению курсового проекта, страница 8

            Помимо записей о символических именах, в стек времени выполнения должны заноситься записи о точках возврата, т.е. об адресах операторов, к которым следует переходить при выполнении операторов типа return. С этой целью следует завести так называемый указатель адреса команды (IP), текущим значением которого всегда будет индекс элемента массива исполняемого кода, который (элемент) содержит текущую исполняемую команду. При выполнении команды (оператора) вызова блока значение этого указателя , увеличенное на единицу, заносится в стек времени выполнения в качестве точки возврата, а сам указатель приобретает новое значение, которое выбирается из записи таблицы имен блоков, соответствующей вызванному блоку (графа «ссылка на исполняемый код»). При исполнении команды типа return указатель IP приобретает значение, выбранное из вершины стека.

Пример содержания стека времени выполнения

            Выполнение блока main

IP=1

Команда d(a,b)

Содержание стека

g proc

main

d proc

main

c proc

main

b var

main

a var

main

0 return

адрес возврата (останова)

            Выполнение блока d

IP=5

Команда c(b,f)

Содержание стека

e param

d

f param

d

b var

d

2 return

адрес возврата

g proc

main

d proc

main

c proc

main

b var

main

a var

main

0 return

адрес возврата (останова)

            Выполнение блока c

IP=4

Команда return

Содержание стека

a var

c

 e param

c

d paramv

c

6 return

адрес возврата

e param

d

f param

d

b var

d

2 return

адрес возврата

g proc

main

d proc

main

c proc

main

b var

main

a var

main

0 return

адрес возврата (останова)

            Выполнение блока d

IP=6

Команда return

Содержание стека

e param

d

f param

d

b var

d

2 return

адрес возврата

g proc

main

d proc

main

c proc

main

b var

main

a var

main

0 return

адрес возврата (останова)

И т.д.

7.  График выполнения курсового проекта

Содержание этапа

№ недели отчетности

Описание интерфейса и подготовка тестов

5

Описание типов для внутреннего представления внешних структур данных и разработка функций вывода этих данных

6

Описание интерфейсов функций компилирующей части и моделирования выполнения.

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

7

Разработка функции компилирующей части для динамического формирования области видимости имен

9

Разработка функции компилирующей части для статического формирования области видимости имен

11

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

13

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

15

Оформление пояснительной записки

16

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.   Вирт Н. Алгоритмы и структуры данных. - М.: Мир,1989. - 360с.

2.   Подбельский В.В. Язык С++. – М.: Финансы и статистика, 2003.-560с.

3.   Пратт Т., Зелковиц М. Языки программирования: разработка и реализация. – СПб.: Питер, 2002. -688с.

4.   Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. - М.: «Нолидж», 1997. - 616с.

СОДЕРЖАНИЕ

1.     Задание на курсовой проект. 2

2.     Тестовый пример. 2

3.     Варианты задания. 2

4.     Содержание пояснительной записки. 2

5.     Пояснения к используемой терминологии. 2

6.     Рекомендации по методике проектирования. 2

7.     График выполнения курсового проекта. 2

БИБЛИОГРАФИЧЕСКИЙ СПИСОК.. 2