Similar presentations:
Языки программирования
1. Языки программирования
Теория разработки трансляторов ипрактическая применимость
технологий генерации компиляторов
2. План лекции 1
• Классификация подходов при созданиитрансляторов
• Компиляция
• Интерпретация
• Ассемблер
• Компиляция JIT
• Виртуальная машина
• Фазы компиляции
• Компиляторы компиляторов
• Формулировка практического задания. Обсуждение
этапов работы.
3. Классификация подходов при создании трансляторов
Трансля́тор — программа, которая принимает на входпрограмму на одном языке, и преобразует её в программу,
написанную на другом языке.
Компилятор — выдает результат в виде исполняемого файла
(компоновка входит в компиляцию).
Интерпретатор — исполняет программу после разбора. Код
исполняется построчно, программа транслируется
(интерпретируется) при каждом запуске.
Ассемблер — компьютерная программа, компилятор
исходного текста программы написанной на языке ассемблера,
в программу на машинном коде.
4. Компиляция
Компилятор (compiler) переводит исходную программу в эквивалентнуюпрограмму на языке, понятном компьютеру, то есть на машинном языке.
Программа, полученная в результате работы компилятора - целевая программа
(target program).
Процесс компиляции и последующего выполнения программы:
Исходная
программа
Компиляция
Целевая
программа
Входные
данные
Целевая программа
Результат
5. Интерпретация
Интерпретатор — исполняют программу после разбора (в этом случае в роли объектногокода выступает внутреннее представление программы интерпретатором).
Процесс интерпретации программы в общем случае:
Программа на
входном языке
Интерпретатор
Результат
работы
программы
Сообщения
об ошибках
Программа исполняется построчно:
Начало
Выборка
очередной
инструкции
Анализ
инструкции
Выполнение
инструкции
6. Ассемблер
Ассемблер – это вид транслятора, компилятор исходного текста программынаписанной на языке ассемблера, в программу на машинном коде.
Процесс работы компилятора, ассемблера и линковщика:
Исходная
программа
Программа
на ассемблере
Компиляция
Ассемблер
Объектная
программа
…
Объектная
программа
Редактор
связей
Результирующая
программа
7. Виртуальная машина
Виртуальная машина– это разновидность интерпретатора, которая:1. Перед исполнением переводят программу в байт-код
2. Предоставляет программам расширенное по функционалу окружение
Процесс исполнения кода посредством виртуальной машины:
Исходная
программа
Компилятор
Байт-код
Интерпретатор
Результат
Данные
8. Компиляция Just In Time
JIT компилятор – это разновидность интерпретатора, которая перед исполнениемпереводят программу непосредственно в машинный код и хранит его в памяти не
сохраняя в виде исполняемого файла
Процесс исполнения кода посредством компилятора JIT:
Исходная
программа
Компилятор
Байт-код
Данные
JIT-компилятор
Исполняемый
код
Результат
9. Фазы компиляции
• Лексический анализ (сканирование,scanning)
• Препроцессор
• Синтаксический анализ (разбор, parsing)
• Семантический анализ
• Генерация промежуточного кода
• Оптимизация кода
• Генерация кода
10. Роль фаз компиляции в наше время
Ранее:Lexer
Parser
Sem.
Optimiz.
Code Gen
Сейчас:
Lex.
Pars.
Semantic
Optimization
C.G.