Помимо записей о символических именах, в стек времени выполнения должны заноситься записи о точках возврата, т.е. об адресах операторов, к которым следует переходить при выполнении операторов типа 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 |
адрес возврата (останова) |
И т.д.
Содержание этапа |
№ недели отчетности |
Описание интерфейса и подготовка тестов |
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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.