М.Ю. Харламов, ВНУ им. В.Даля, 2009. Транслятор Транслятор - это программа, которая переводит программу на исходном (входном) языке в эквивалентную ей.

Презентация:



Advertisements
Похожие презентации
Введение в теорию компиляции Основные принципы построения трансляторов.
Advertisements

Теория языков программирования и методы трансляции Тема 1 Основные концепции.
Язык высокого уровня компилятор Программа компиляторов Сделал:Студент группы:Ис-2о(очная)Воротов Валентин.
ЛАБОРАТОРНАЯ РАБОТА 1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ТАБЛИЦ, ИСПОЛЬЗУЕМЫХ В ТРАНСЛЯТОРЕ Рейн Т. С.
ПРЕЗЕНТАЦИЯ НА ТЕМУ: ПРЕЗЕНТАЦИЯ НА ТЕМУ: ВИДЫ ТРАНСЛЯЦИИ Составил: Ревнивцев М.В Преподаватель: Кленина В.И.
М.Ю. Харламов, ВНУ им. В.Даля, Генерация объектного кода это перевод компилятором внутреннего представ­ления исходной программы в цепочку символов.
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Общее устройство компиляторов. Использование Lex и Yacc Сергей Нечаев, аспирант МО ВВС ИВМиМГ.
Лекция 7 Управление памятью Сегментная, страничная и сегментно- страничная организация памяти.
Тема лекции: «Введение в алгоритмизацию». Термин «Алгоритм» Алгоритм – это однозначное и детальное описание последовательности действий по преобразованию.
Этапы решения задач на компьютере 1. Постановка задачи. 2. Построение математической модели. 3. Составление алгоритма. 4. Запись алгоритма на языке программирования(кодирование)
П РЕОБРАЗОВАНИЕ ПРОГРАММ НА ЯЗЫКЕ C-DVM В ПРОГРАММЫ ДЛЯ КЛАСТЕРОВ выполнила: студентка 527 группы Коваленко Алина Игоревна научный руководитель: профессор,
Лекция 1 Введение в программирование и язык C. Машинный код Машинный код или машинный язык система команд (набор кодов операций) конкретной вычислительной.
Трансляция - процесс перевода программы, из алгоритмического языка на машинный язык (в коды компьютера). Транслятор - программа-переводчик. ТРАНСЛЯЦИЯ.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 2.
М.Ю. Харламов, ВНУ им. В.Даля, Оптимизация программы Оптимизация программы это обработка, связанная с переупорядочиванием и из­менением операций.
ЯЗЫКИ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ Рейн Т. С. Сущность трансляции. Компиляция и интерпретация.
Системы программирования Системы программирования обеспечивают создания новых программ для компьютера. Современные системы программирования обычно представляют.
Системы программирования Средства создания программ Интегрированные системы программированияИнтегрированные системы программирования Среды быстрого проектирования.
Алгоритмизация и программирование. Языки программирования высокого уровня. Технологии программирования Алгоритмизация и программирование. Языки программирования.
Транксрипт:

М.Ю. Харламов, ВНУ им. В.Даля, 2009

Транслятор Транслятор - это программа, которая переводит программу на исходном (входном) языке в эквивалентную ей программу на результирующем (выходном) языке Тема 1. Основы компиляторов Транслятор Целевая программа Исходная программа Сообщения об ошибках

Компилятор Компилятор генерирует результирующую программу, предназначенную для непосредственного исполнения на целевой вычислительной системе исходная программа исходный код результирующая программа объектная программа (объектный код) Интерпретатор Интерпретатор это программа, которая воспринимает исходную программу на входном языке и (сразу же) выполняет ее Тема 1. Основы компиляторов

Скелетная исходная программа Препроцессор Исходная программа Компилятор Ассемблер Загрузчик/Ре- дактор связей Целевая ассемблерная программа Перемещаемый машинный код Библиотека, объектные файлы Абсолютный машинный код

Тема 1. Основы компиляторов Лексический анализ Синтаксический разбор Семантический анализ Подготовка к генерации кода Внутреннее представление программы Генерация кода Исходная программа Анализ и локализация обнаруженных ошибок Сообщение об ошибке Объектная программа Таблицы идентификаторов Синтез Анализ

лексическом анализе токенов При лексическом анализе символы исходной программы считываются (слева направо) и группируются в поток токенов (token), в котором каждый токен представляет логически связанную последовательность символов: идентификатор, ключевое слово (if, while и т.п.), символ пунктуации,… Тема 1. Основы компиляторов position := initial + rate * 60 Лексический анализатор id 1 := id 2 + id 3 * 60

Синтаксический разбор Синтаксический разбор основная часть компилятора на этапе анализа: выполняется выделение и иерархическое группирование синтаксических конструкций в тексте исходной программы, обработанном лексическим анализатором проверяется синтаксическая правильность программы Тема 1. Основы компиляторов id 1 := id 2 + id 3 * 60 Синтаксический анализатор id 1 id 2 id 3 60 * + :=

Тема 1. Основы компиляторов семантического анализа: В процессе семантического анализа: проверяется наличие семантических ошибок в исходной программе и накапливается информация о типах Производится идентификации операторов и операндов выражений и инструкций Семантический анализатор id 1 id 2 60 * + := id 1 id 2 60 * + inttoreal

Управление таблицей символов Таблица символов - структура данных, содержащую записи о каждом идентификаторе с полями для его атрибутов: сведения об отведенной идентификатору памяти, его типе, области видимости, … Обнаружение ошибок и сообщение о них Тема 1. Основы компиляторов

Генерация явного промежуточного представления исходной программы (программа для абстрактной машины) Генератор промежуточного кода id 1 id 2 60 * + inttoreal temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3

Тема 1. Основы компиляторов При оптимизации кода производятся попытки улучшить промежуточный код, чтобы получить более эффективный машинный код. Оптимизатор кода temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 temp1 := id3 * 60.0 id1 := id2 + temp1

Тема 1. Основы компиляторов При оптимизации кода производятся попытки улучшить промежуточный код, чтобы получить более эффективный машинный код. Генератор кода temp1 := id3 * 60.0 id1 := id2 + temp1 MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF Rl, id1

Начальная стадия Начальная стадия объединяет те фазы компилятора, которые зависят в 1 ую очередь от исходного языка и практически не зависят от целевой машины Лексический и синтаксический анализ, создание таблицы символов, семантический анализ и генерация промежуточного кода Заключительная стадия Заключительная стадия состоит из тех фаз компилятора, которые в 1 ую очередь зависят от целевой машины, для которой выполняется компиляция, и, вообще говоря, не зависят от исходного языка (а только от промежуточного) + часть оптимизации кода и генерация выходного кода (сопровождаемые необходимой обработкой ошибок и работой с таблицей символов) Тема 1. Основы компиляторов

Проход Проход процесс последовательного чтения компилятором данных из внешней памяти, их обработки и помещения результата работы во внешнюю память Чаще всего один проход включает в себя выполнение одной или нескольких фаз компиляции Наиболее распространены 2 х- и 3 х-проходные компиляторы, например: 1 ый проход лексический анализ, 2 ой - синтаксический разбор и семантический анализ, 3 ий генерация и оптимизация кода Желательно иметь компилятор с минимальным числом проходов Тема 1. Основы компиляторов

Препроцессоры Препроцессоры - создают входной поток информации для компилятора обработка макросов; включение файлов; «интеллектуальные'' препроцессоры; языковые расширения… Программы для предварительного анализа структурные редакторы; программы форматированного вывода на печать; статические проверяющие программы… Ассемблеры Ассемблеры Загрузчики и редакторы связей Загрузчики и редакторы связей Тема 1. Основы компиляторов

1. Ахо А.В., Сети. Р., Ульман Д.Д. Компиляторы: принципы, технологии и инструменты М.: Издательсхий дом "Вильямс" с. 2. Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов. СПб.: Питер, с: 3. Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум. – СПб.: Питер, – 284 с. Тема 1. Основы компиляторов