КУРСОВИЙ ПРОЕКТ
з дисципліни СИСТЕМНЕ ПРОГРАМУВАННЯ
Тема – Розробити компілятор, який дозволяє створювати спрощені програми з виводом текстових повідомлень та розгалуженнями на основі умовного оператора CASE. Операції присвоєння та порівняння реалізувати для однобайтових констант та змінних. Результатом роботи компілятора є *.com або *.exe файл
Анотація
В курсовому проекті проаналізований алгоритм роботи компілятора на рівні DOS-режиму, а також детально розглянута структура та параметри виконуваної програми. На основі даного алгоритму написаний компілятор, який забезпечує виконання простих операцій виводу на екран.
Summary
In a course project there is the analyzed algorithm of work at the level of DOS-breaking and Assembler-commands was written, and also the in detail considered structure and parameters of boot region. On the basis of this algorithm the written system boots, compiler that provides implementation of simple operations.
Зміст
ВСТУП ….7
ОПИС ОСНОВНИХ ФУНКЦІЙ, ЩО ВИКОРИСТАНІ В
ПРОГРАМІ …..8
КОД ПРОГРАМИ З ПОЯСНЕННЯМИ …. 9
БЛОК-СХЕМА ПРОГРАМИ … 14
4 ОПИС РОБОТИ … 15
ВИСНОВКИ … 16
ПЕРЕЛІК ВИКОРИСТАНИХ ЛІТЕРАТУРНИХ ДЖЕРЕЛ..17
Вступ
Завданням курсового проектування поставлена задача написати програму - компілятор, яка може створювати *.соm або *.ехе модулі. Написання таких компіляторів дозволяє уніфікувати складні задачі програмування, до виконання маленьких файлів з простим кодом. Набір команд та конструкцій, що його розуміє компілятор є мінімально необхідним для роботи.
1 Список основних функцій використаних в програмі
Основу програми складає три блоки.
Перший блок виконує розбір блоків програми. Визначивши тип блоку програми заносить код відповідного коду блоку та його параметри до стеку команд. Останнім символом в стеку команд є Oxff.
Наступний блок перевіряє правильність слідування блоків. Перевіривши зв'язки між блоками кодів, формується asm файл.
Третій блок компілює, програму та створює ехе модуль.
В програмі описані дві головні функції:
int SetVar(char *varname)- для пошуку змінних в масиві змінних та
занесення в масив нового значення, в випадку відсутності в ньому
знечень. Функція повертає ідентифікатор змінної.
int ParseWord(char *a) - для перевірки чи слово є ключовим типу ‘CASE’ та ін.. У випадку коли слово не є ключовим то викликається функція SetVar. Функція повертає ідентифікатор змінної, або ключового слова.
Блок-схема
3 Опис роботи програми
Програма перевіряє вміст ресурсного файла аналізуючи команди, що записані в ньому. Зчитане слово аналізується. Виконуються порівняння слова зі змінними, службовими словами та константами. Службові слова в програмі реалізовані з допомогою нового типу змінних, які збережені в масиві. Після провалу всіх перевірок видається повідомлення про неможливість зчитати параметр та вихід з програми.
Після зчитування всіх параметрів відбувається перевірка на правильність слідування команд та параметрів цих команд. Якщо програма помічає невідповідність в кодах команд та їх параметрів, або порушення правил черговості слідування команд програма видає повідомлення про помилку. Після перевірки черговості команд відбувається формування асемблерної програми. Асемблерна програма вважається завершеною коли досягається кінець стеку. Кінець стеку позначається службовими символами Oxff. Після збереження сформованої програми в файл відбувається компілювання програми за допомогою вбудованих програм Tasm та Tlink. Сформована програма - це ехе модуль, який можна запускати на персональному комп'ютері.
Висновки
В результаті виконання курсового проектування розроблено компілятор, що дозволяє створювати спрощені програми з виводом однобайтових змінних та циклічним повторенням на основі оператора циклу FOR. Подано опис програми та приклади її функціонування в середовищі MS-DOS. Текст програми написано на мові C--.
Перелік використаних джерел
Костельцев А.В. Построение интерпретаторов и
компиляторов. - СПб: Наука и техника, 2001. - 224 с.
Системное программное обеспечение. Учебник для вузов/
А.Ю. Молчанов. - СПб: Питер, 2003. - 396 с.
Джорден Р. Справочник программиста персональных
компьютеров типа IBM PC, XT и AT: Пер. с англ./ Предисл.
Н.В. Гайского. - М.: Финансы и статистика, 1992. - 544с.
Фролов А.В., Фролов Г.В. MS-DOS для программиста. - М.:
ДИАЛОГ-МИФИ, 1995.-256с.
А.В.Фролов, Г.В.Фролов. MS-DOS для програмиста №18,19. -
М.: Диалог-МИФИ, 1995. - 254 с.
Ф.Льюис, Д.Розенкрац, Р.Стирнз. Теоретические основы
проектирования компиляторов. - М.: Мир, 1979.
Т.Пратт. Языки программирования. Разработка и реализация.
-М.:Мир, 1979.