Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Введение в компиляцию

Phoenix.

Платформа Microsoft для построения компиляторов, средств анализа, оптимизации и верификации кода. Обзор составляющих.

 

Введение в компиляцию.. 1

Основы Phoenix. 2

Промежуточное представление (Intermediate Representation – IR) 3

Фазы компиляции. 3

Сборки и модули. 3

Система типов. 4

Управляемый и неуправляемый режимы компиляции. 4

Компоненты Phoenix. 4

Компоненты преобразования кода. 4

Компоненты обработки входных и выходных данных. 5

Средства управления. 5

Инфраструктура потоков данных. 5

Сборщик мусора (Garbage Collector – GC) 5

Графы.. 5

Коллекции. 6

Использование псевдонимов (Aliasing) 6

Lifetime (время жизни) 6

Обработка исключений. 6

Расширения (plug-in) 6

Итоги. 7

 

Введение в компиляцию

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

Концептуально компилятор работает пофазно, причём в процессе каждой фазы происходит преобразование исходной программы из одного представления в другое. На рисунке 1 приведено типичное разбиение компилятора на фазы.

Поясним фазы компиляции. Лексический анализ – анализ исходной программы, при котором поток символов исходной программы считывается слева направо и группируется в токены (token), представляющие собой последовательности символов с определённым совокупным значением.

Синтаксический анализ – анализ, при котором символы или токены иерархически группируются во вложенные конструкции с совокупным значением. Токены исходной программы группируются в грамматически фразы, используемые компилятором для синтеза вывода. Обычно грамматические фразы исходной программы представляются в виде дерева.

В процессе семантического анализа проверяется наличие семантических ошибок в исходной программе и накапливается информация о типах для следующей стадии ­– генерации кода. При семантическом анализе используются иерархические структуры, полученные во время синтаксического анализа для идентификации операторов и операндов выражений и инструкций. Важным аспектом семантического анализа является проверка типов, когда компилятор проверяет, что каждый оператор имеет операнды допустимого спецификациями языка типа.

После синтаксического и семантического анализа некоторые компиляторы генерируют явное промежуточное представление исходной программы, которое можно рассматривать как программу для абстрактной машины. Это представление должно легко создаваться и транслироваться в целевую программу.

При оптимизации кода производятся попытки улучшить промежуточный код, чтобы получить более эффективный машинный код.

Последняя фаза компиляции состоит в генерации целевого кода, обычно перемещаемого машинного кода или ассемблерного кода.

Рисунок 1 Фазы компилятора

Компиляторы очень разнообразны. Используются тысячи исходных языков, от традиционных языков высокого уровня (таких как С# или Pascal) до специализированных, возникающих во всех областях компьютерных приложений. Целевые языки не менее разнообразны – это могут быть другие языки программирования, различные машинные языки – от языков микропроцессоров до суперкомпьютеров.

Иногда компиляторы классифицируют как однопроходные, многопроходные, исполняющие (load-and-go), отлаживающие, оптимизирующие – в зависимости от предназначения, принципов и технологий создания. Несмотря на разнообразие, основные задачи, выполняемые компиляторами, по сути, одни и те же. Понимая эти задачи, можно создавать компиляторы для различных исходных языков и целевых машин с использованием одних и тех же базовых технологий.


<== предыдущая страница | следующая страница ==>
Автоматическое регулирование рабочих параметров котла | Промежуточное представление (Intermediate Representation – IR)

Дата добавления: 2014-12-09; просмотров: 366; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.004 сек.