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.


 

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

24297. Організація системи мерчандайзингу у роздрібній компанії 26.47 KB
  Вибір того або іншого варіанта залежить від багатьох факторів: формату магазину, розміру його торговельної площі, широти асортиментної матриці, частоти ротації і зміни асортименту, організаційної структури магазину в даний момент і напрямів її трансформації у перспективі...
24298. Система СМИ в Российской Федерации 41 KB
  Аудиовизуальные СМИ – радио телевидение эфирное кабельное документальное неигровое кино видеовещание. Обеспечивают деятельность других СМИ поставляя им готовые тексты и сырые факты. Прессцентры являются посредниками между СМИ и подразделениями данного ведомства и действуют по нескольким направления консультируют установление контактов СМИ с различными подразделениями ведомствами Интернет источники.
24299. Мировые тенденции развития современной журналистики 48 KB
  С другой стороны все более заметным становится рост общественной активности в информационной сфере проявляющийся в создании альтернативных массмедиа – по преимуществу на сетевой платформе а также в деятельности гражданских организаций мониторинга СМИ и медиакритики в отстаивании требований демократизации медийного сектора сохранения и развития мощных общественных средств массовой информации. В большой Европе СМИ все чаще называют медиаиндустрией а журналистские произведения – медиапродуктами рассматривая их как товарную продукцию...
24300. Публицистические жанры журналистики и их место в системе жанров журналистского творчества 51 KB
  Жанры журналистики отличаются от литературных достоверностью адресностью фактов. Жанр в прессе – это способ подачи информации. Теоретики классифицируют жанры по назначению объекту изображения теме стилистике выразительным средствам и проч.
24301. Этика в СМИ, теория свободы прессы 24 KB
  Этика в СМИ теория свободы прессы. Главная тенденция по итогам исследования 2010 года СМИ в теме социальной ответственности низкая доля внимания средств массовой информации к тематике в целом. встречаются редко и лишь на страницах отдельных СМИ. Причем если деятельность официально зарегистрированных организаций благотворительных и правозащитных объединений фондов помощи и общественных ассоциаций проводящих мероприятия имеющие статус официальных а также отдельные социальные акции крупных компаний или государственных структур еще...
24302. Состояние и развитие рекламного рынка в России и мире. Законодательное регулирование рекламных процессов 37 KB
  История рекламы исчисляется не годами а тысячелетиями. С момента возникновения такой экономической категории как товар и установления товарного производства началось развитие рекламы как искусства. Журнал Лаборатория рекламы маркетинга и PR №1. Мировой рекламный рынок: рынок мировой рекламы растет однако его рост замедлился.
24303. Планирование рекламной кампании 31.5 KB
  Планирование рекламной кампании. Планирование рекламной кампании разбивается на следующие этапы: Определение целей рекламной кампании; Разработка рекламной идеи и стратегии рекламной кампании; Исследование рынка; Разработка бюджета рекламной кампании; Выбор средств распространения рекламной информации; Выбор графика проведения рекламной кампании; Составление медиаплана рекламной кампании; Оценка эффективности рекламной кампании. Рекламные кампании различаются: По основному объекту рекламирования можно выделить кампании по рекламе:...
24304. Виды и формы рекламной информации и средств рекламы 30 KB
  ATL это мероприятия по размещению прямой рекламы которые задействуют 6 основных носителей ТВ пресса радио реклама на транспорте наружная реклама реклама в Интернет. Наружная реклама рекламные средства в виде вывесок наружных плакатов щитов перетяжек витрин козырьков световых установок на зданиях улицах и обочинах дороги. Наружная реклама содержит и использует лаконичный запоминающийся текст рисунок. Реклама на транспорте разновидность рекламы достигающей людей которые пользуются общественным транспортом.
24305. Оценка эффективности рекламной кампании 26.5 KB
  По этой причине оценка эффективности рекламы учитывает комплекс создавшихся на рынке условий и факторов способствующих или препятствующих решению маркетинговых задач. Основная задача исследований эффективности рекламы состоит в том чтобы научиться косвенно предсказывать ее влияние на коммерческую деятельность фирмы. Эти исследования прежде всего направлены на повышение эффективности рекламной деятельности снижения риска ее проведения лучшее использование финансовых средств.