20614

Разработка компилятора

Лекция

Коммуникация, связь, радиоэлектроника и цифровые приборы

Параметры: S исходный язык I язык реализации компилятора на котором написан T целевой язык генерация кода для целевой машины Т. Если взять связку 3х компиляторов то получим еще один компилятор: Использование возможностей языка для компиляции его самого называется раскруткой. Кросскомпилятор LSN создан для нового языка Lна языке реализации S с генерацией кода для машины N.

Русский

2013-07-31

208.5 KB

6 чел.

Лекция №15

Разработка компилятора

Написать компилятор для Fortran:

Исходный язык (отличие от существующих компиляторов)

Целевой язык (платформа)

Критерии производительности (скорость исполняемого кода – оптимальный объем).

Параметры:

S – исходный язык,

I – язык реализации компилятора (на котором написан),

T – целевой язык (генерация кода для целевой машины Т).

   ->    

Если взять связку 3-х компиляторов, то получим еще один компилятор:

Использование возможностей языка для компиляции его самого называется раскруткой.

Кросс-компилятор LSN  создан для нового языка Lна языке реализации S с генерацией кода для машины N.

Существует компилятор SMM для языка S, работающий на машине M и генерирующий код для M.

Если LSN пропустить через SMM, то получится LMN.

Пример 1: Создание языка Паскаль.

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

Создавая компилятор LLN, разработка происходила на машине, где имеется существующий компилятор LMM. Если соединить диаграммой, то получим LMN.

Пример 2. Фортран написан на Фортран и прошел 3 стадии раскрутки.

  1.  IBM 384 прошел раскрутку на компиляторе system 360.

FFM -> FМM

  1.  Вручную был создан FM1M1 неоптимизированный.
  2.  Прогоняется FFM через FM1M1. Получаем компилятор FM1M для Фортран, делающий неоптимальный код оптимальным, но работающий неоптимально.
  3.  Берем FFM и прогоняем его через FM1M. Получим компилятор FМM, делающий оптимальный код и работающий оптимально.

Структуры существующих языков

//Паскаль в момент рождения

Средства оптимизации создания компиляторов:

  1.  генератор синтаксических анализаторов,

вход: грамматика,

выход: синтаксический анализатор.

  1.  генератор лексического анализатора,
  2.  средства синтаксически-управляемой трансляции (синтаксическое дерево, с каждым листом связано действие),
  3.  автоматический генератор кода (преобразование из промежуточного языка в язык целевой машины).


Исходный код

Лексический анализатор

оток токенов

Генератор промежуточного кода

Семантический анализатор

Результирующий код

  1.  

 

А также другие работы, которые могут Вас заинтересовать

10954. Формула полной вероятности 60.55 KB
  Формула полной вероятности Следствием обеих основных теорем теоремы сложения вероятностей и теоремы умножения вероятностей является так называемая формула полной вероятности. Пусть требуется определить вероятность некоторого события которое может произойти и...
10955. Повторение испытаний (Схема Бернулли) 90.31 KB
  Повторение испытаний Схема Бернулли Если производится несколько испытаний опытов причем вероятность события в каждом испытании не зависит от исходов других испытаний то такие испытания называются независимыми относительно события . В схеме Я. Бернулли рассматр
10956. Локальная теорема Муавра-Лапласа 65.77 KB
  Локальная теорема МуавраЛапласа Несмотря на элементарность формулы Бернулли при большом числе испытаний непосредственное вычисление по ней связано с большой вычислительной работой погрешностью. Разрешить эту проблему поможет локальная теорема МуавраЛапласа:
10957. Непрерывная случайная величина и плотность распределения 181.23 KB
  Непрерывная случайная величина и плотность распределения Случайная величина называется непрерывной если ее пространством элементарных событий является вся числовая ось либо отрезок отрезки числовой оси а вероятность наступления любого элементарного события р
10958. Числовые характеристики одномерной случайной величины 163.51 KB
  Числовые характеристики одномерной случайной величины Математическим ожиданием или средним значением случайной величины называется постоянная константа обозначаемая символом и определяемая равенством: 8.1 ПРИМЕР 1: Известны законы распределения СВ и чи
10959. Многомерные случайные величины 198.57 KB
  Многомерные случайные величины Очень часто результат испытания характеризуется не одной случайной величины а некоторой системой случайных величин которую называют также многомерной мерной случайной величиной или случайным вектором . Случайные величины в
10960. Условная плотность распределения 140.12 KB
  Условная плотность распределения Рассмотрим другой подход при определении вероятности попадания двумерной СВ в элементарный прямоугольник со сторонами и и устремим и к нулю. Рассмотрим вероятность попадания в элементарный прямоугольник как произведение вероятн
10961. Нормальный (гауссов) закон распределения 209.39 KB
  Нормальный гауссов закон распределения Нормальный закон распределения закон Гаусса играет исключительно важную роль в теории вероятностей. Это наиболее часто встречающийся на практике закон распределения СВ. Главная особенность выделяющая закон Гаусса состоит в
10962. Показательный (экспоненциальный) закон распределения 102.76 KB
  Показательный экспоненциальный закон распределения В теории массового случайные процессы часто распределены по показательному закону например время обслуживания требования каналом обслуживания. Непрерывная случайная величина имеет показательный экспоненциа