Оглавление
Введение
Расчёт варианта задания
Разработка контрольного примера
Описание используемых директив и команд ассемблера
Выбор варианта построения ассемблера, описание алгоритмов и таблиц
Листинг программы
Алгоритм работы программной реализации разрабатываемого компилятора
Заключение
Введение
Основной целью курсовой работы является создание и изучение объектного файла. Создаваемый объектный файл должен восприниматься линковщиком и преобразовываться в исполняемый файл (COM или EXE). Перевод исходной программы в её объектное представление осуществляет транслятор, поэтому его программная реализация также является целью курсовой работы.
Транслятор - это программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем (выходном) языке.
С точки зрения принципа работы транслятор выступает как переводчик: преобразует предложения входного языка в эквивалентные им предложения выходного языка. Кроме того, само слово «транслятор» означает «переводчик».
Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати тексты программы и т. д.
Язык, на котором представлена входная программа, называется исходным языком, а сама программа - исходным кодом. Выходной язык называется целевым языком или объектным кодом.
Трансляторы подразделяют:
Диалоговый. Обеспечивает использование языка программирования в режиме разделения времени.
Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
Тестовый. Набор макрокоманд языка ассемблера, позволяющих задавать различные отладочные процедуры в программах, составленных на языке ассемблера.
Обратный. Для программы в машинном коде выдаёт эквивалентную программу на каком-либо языке программирования.
Процесс компиляции состоит из двух основных этапов ? анализа и синтеза (рис. 1).
На этапе анализа распознается текст исходной программы, создаются и заполняются таблицы идентификаторов. Результатом анализа является некое внутреннее представление программы, понятное компилятору.
На этапе синтеза из внутреннего представления программы и информации из таблицы идентификаторов, получается результирующая объектная программа.
В составе компилятора присутствует часть, ответственная за анализ и исправление ошибок. При наличии ошибок в тексте исходной программы пользователь должен получить максимально полную информацию о типе ошибки и месте её возникновения.
Лексический анализ. Эту часть компилятора выполняет сканер, который читает литеры программы (символы) на исходном языке и строит из них слова (лексемы) исходного языка. На входе сканера (лексического анализатора) текст исходной программы, выходная информация передаётся для дальнейшей обработки на этап синтаксического разбора.
Синтаксический разбор ? это основная часть компилятора на этапе анализа. Здесь в тексте исходной программы выделяются синтаксические конструкции. Кроме того, проверяется синтаксическая правильность программы.
Рис. 1. Функции основных фаз компиляции:
Семантический анализ ? это часть компилятора, проверяющая часть текста исходной программы с точки зрения семантики входного языка.
Подготовка к генерации кода ? на этой фазе компилятор выполняет предварительные действия, непосредственно связанные с синтезом текста результирующей программы: идентификация элементов языка, распределение памяти и т.п. Эта подготовка ещё не ведёт к порождению текста на выходном языке.
Генерация кода ? это фаза, на которой непосредственно порождаются команды, составляющие предложения выходного языка и текст результирующей программы в целом. Фаза генерации кода основная на этапе синтеза результирующей программы. Кроме этого, генерация обычно включает в себя и оптимизацию. Оптимизация ? это процесс, связанный с обработкой уже порождённого текста и оказывающий существенное влияние на качество и эффективность результирующей программы.
Таблицы идентификаторов - это специальным образом организованные наборы данных, которые хранят информацию об элементах исходной программы. Содержимое таблицы идентификаторов используется для порождения текста результирующей программы. В процессе компиляции нужно хранить информацию о переменных, константах, функциях и т.п. Конкретный состав таблицы идентификаторов зависит от используемого входного языка программирования.
Предметы
Актуальные Курсовые работы (Теория) по программному обеспечению, программированию