77369

РАЗРАБОТКА КОМПИЛЯТОРА ДЛЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ RIDE.L

Научная статья

Информатика, кибернетика и программирование

Согласно которой используя статическую типизацию и перегрузку операторов для описания семантики синтаксических конструкций языка на самом языке можно получать эффективный машинный код. Оператор в качестве аргументов получает несколько выражений и одну строковую константу содержащую ассемблерный код в тернарной форме. В общем случае аппликация операторов происходит так: код реализация оператора подставляется по месту обращения; код определяется следующим образом: если выражение это оператор код фрагментов при проходе слева...

Русский

2015-02-02

24 KB

0 чел.

РАЗРАБОТКА КОМПИЛЯТОРА ДЛЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ RIDE.L

М.О. Бахтерев, В.В. Косенко

ИММ УрО РАН, УрГУ, Екатеринбург

Растущая сложность задач решаемых в рамках высокопроизводительных вычислений влечет за собой увеличение сложности соответствующего программного обеспечения. Возникает две связанные между собой задачи:

  1.  Не усложнять процесс разработки.
  2.  Максимально эффективно использовать ресурсы вычислителя.

С первой лучше справляются динамические языки программирования, со второй - языки с классической архитектурой компиляторов. Универсального инструмента нет, и работы по поиску подходящей концепции активно проводятся (переработанные версии Fortran, C++, Haskell, появление Go [1]).

Вопрос актуален, поэтому с нашей стороны была разработана идея императивного языка RiDE.L (оригинальное название 7fa2.L) [2,3], согласно которой, используя статическую типизацию и перегрузку операторов для описания семантики синтаксических конструкций языка на самом языке, можно получать эффективный машинный код. Данная идея является развитием метапрограммирования (Lisp, Nemerle) и сводится к динамическому выстраиванию окружения, состоящего из типов, переменных и операторов. Всё это легко укладывается в границы простого в реализации и компактного компилятора, что особенно полезно при портировании языка на специализированные вычислители и новые типы процессоров.

За основу взят язык алгебраических выражений:

  •  упрощенная лексика языка C (без ключевых слов и одним типом скобок);
  •  операторный синтаксис с сокращенной таблицей приоритетов.

Семантика строится на основе трех языковых примитивов: специального оператора asm, двух связывающих операторов:

  •  ; - бинарный оператор c пустой реализацией, определенный для всех типов;
  •  , - не совсем оператор, управляет арностью остальных операторов (например: (a,b)+c – трехоперандное сложение, (a,b)+(c,d) - четырех).

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

  •  создают типы и операторы;
  •  объявляют переменные;
  •  получают лексемы у идентификаторов и констант,
  •  перестраивают фрагменты дерево разбора как обобщенные выражения;
  •  работают с прочими структурами времени компиляции.

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

Другие операторы (арифметика, функции, объектный подход) определяются самим программистом и выражаются через asm и пару связок по индукции. В общем случае аппликация операторов происходит так:

  •  код реализация оператора подставляется по месту обращения;
  •  код определяется следующим образом:

если выражение - это оператор

код фрагментов (при проходе слева направо) + реализация оператора

иначе (атомарное выражение)

пусто.

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

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

По окончанию компиляции каждое выражение получит тип, ссылку на значение и ассемблерный код. Код корневого выражения будет передан далее back-end’у.

На текущий момент закончена вторая версия front-end’а компилятора и RiDE.L-программа-библиотека, реализующая привычное определение типов, переменных и операторов, а так же такие конструкции как if-else, for-break-continue и switch-case-default-break. Первая версия была написана в виде с использованием perl и javascript под Windows для проверки и корректировки нашей теории. Новая версия написана на C#, она значительно быстрее, работает как в Windows (.Net), так и в Linux (Mono), а код стал намного понятнее.

Сейчас ведется разработка оптимизатора и генератора кода. Возможно первым целевым языком для полноценного RiDE.L-компилятора станет MSIL.

Список литературы

  1.  http://golang.org/
  2.  Бахтерев М.О. Язык программирования 7fa2.L // Третья международная конференция "Информационно-математические технологии в экономике, технике и образовании" г.Екатеринбург, 20-22 ноября 2008 г. Тезисы докладов. Стр.215-216.
  3.  Бахтерев М.О., Косенко В.В. Язык программирования RiDE.L // Тезисы 11-го Международного семинара "Супервычисления и Математическое моделирование", РФЯЦ-ВНИИЭФ, Саров, 2009, с. 25-26.


 

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

80766. Права общественных формирований в области охраны окружающей среды 31.04 KB
  Полномочия общественных экологических объединений в области охраны окружающей природной среды предусмотрены рядом законодательных актов. Федерального закона Об охране окружающей среды. Одним из примеров реализации прав общественных объединений в области охраны окружающей среды может служить опротестование Российским социально-экологическим союзом в Вологодском областном арбитражном суде решения вологодских властей о строительстве на территории Национального природно-исторического парка Русский Север образованного Правительством РФ в...
80767. Право собственности на природные объекты: понятие, виды, объекты и субъекты, основания возникновения 30.39 KB
  Земля и другие природные ресурсы могут находиться в частной государственной муниципальной и иных формах собственности. Земли которые не находятся в собственности граждан юридических лиц или муниципальных образований представляют собой государственную собственность. Право собственности на природные ресурсы – возможность владения пользования и распоряжения данными природными ресурсами.
80768. Право природопользования: понятие, содержание и виды 35.24 KB
  Позитивное природопользование классифицируется по объекту природопользования на землепользование водопользование пользование лесами недрами и животным миром. Право природопользования понимается в двух значениях. В объективном смысле право природопользования это совокупность правовых норм регулирующих отношения по поводу использования и охраны природных ресурсов.
80769. Право общего природопользования 34.47 KB
  При этом однако в ряде случаев устанавливаются пределы и условия общего пользования природными ресурсами. Однако в составе земель поселений выделяются рекреационные территориальные зоны на которых осуществляется право общего землепользования. Землями общего пользования в значительной степени являются земли лесного фонда правовой режим которых определяется земельным законодательством.
80770. Право специального природопользования: основания возникновения и прекращения 31.45 KB
  Формы специального природопользования: комплексное природопользование; специальное пользование водами недрами объектами животного мира другими природными ресурсами. Необходимость введения комплексного природопользования обусловлена тем что нередко при предоставлении одного природного ресурса в пользование используются в большей или меньшей степени другие ресурсы либо на них оказывается воздействие. Право специального природопользования возникает на основании разрешений лицензий договоров оформляемых в рамках определенных в...
80771. Функции государственного экологического управления 29.4 KB
  Речь идет о распоряжении природными ресурсами об обеспечении рационального использования и воспроизводства природных ресурсов сохранения или восстановления благоприятного состояния окружающей среды соблюдения и защиты экологических прав и законных интересов граждан. Функции управления деятельность по обеспечению охраны окружающей природной среды и рационального природопользования: 1 создание системы органов управления в сфере охраны окружающей среды; 2 подзаконное нормотворчество; 3 распоряжение управление природными ресурсами; 4...
80772. Система и полномочия органов государственного экологического управления 33.24 KB
  Полномочия органов государственной власти Российской Федерации в сфере отношений связанных с охраной окружающей среды К полномочиям органов государственной власти Российской Федерации в сфере отношений связанных с охраной окружающей среды относятся: обеспечение проведения федеральной политики в области экологического развития Российской Федерации; разработка и издание федеральных законов и иных нормативных правовых актов в области охраны окружающей среды и контроль за их применением; разработка утверждение и обеспечение реализации...
80773. Мониторинг окружающей среды: правовое регулирование и содержание 29.5 KB
  Государственный экологический мониторинг – мониторинг окружающей среды осуществляемый органами государственной власти РФ и органами государственной власти субъектов РФ. Цели экологического мониторинга: 1 наблюдение за состоянием окружающей среды в том числе в районах расположения источников антропогенного воздействия; 2 наблюдение за воздействием антропогенных источников на окружающую среду; 3 обеспечение потребностей государства юридических и физических лиц в достоверной информации необходимой для предотвращения и или уменьшения...
80774. Лицензирование в области охраны окружающей среды 32.52 KB
  В лицензии на комплексное природопользование указываются: данные о предприятии получившем лицензию; данные о целевом назначении работ связанных с природопользованием; границы территории земельного участка предоставляемого для ведения работ связанных с природопользованием; перечень используемых природных ресурсов лимиты предельные объемы их изъятия или использования; перечень нормативы и лимиты выбросов сбросов загрязняющих веществ и размещаемых отходов; уровни загрязнения компонентов окружающей среды до начала...