fdvmDDr (1158419)

Файл №1158419 fdvmDDr (Раздаточные материалы)fdvmDDr (1158419)2019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

35


Институт прикладной математики им. М.В.Келдыша

Российская Академия наук

Компилятор Fortran DVM

Детальный проект

Март, 2000

Оглавление

1 Назначение компилятора 3

2 Формат командной строки 3

3 Общая схема компилятора 4

3.1 Синтаксический анализ 4

3.2 Преобразование дерева разбора 5

3.3 Генерация кода на языке Фортран 77 5

3.4 Генерация кода на языке HPF 5

4 Основные структуры данных 6

4.1 Дерево разбора 6

4.2 Таблица символов и Таблица типов 6

5 Детальное описание модулей компилятора 8

5.1 Трансляция конструкций языка Fortran DVM (модуль dvm.cpp) 8

5.1.1 Создание распределенного массива и его перераспределение 14

5.1.2 Ссылки на распределенные массивы 18

5.1.3 Параллельный цикл 20

5.2 Трансляция операторов ввода-вывода (модуль io.cpp) 24

5.3 Реструктурирование дерева разбора (модуль stmt.cpp) 26

5.4 Трансляция конструкций языка HPF-DVM (модуль hpf.cpp) 31

5.4.1 Обработка ссылок на распределенные массивы в HPF-DVM 31

5.4.2 Цикл INDEPENDENT 32

В отчете приводится подробное описание реализации компилятора Fortran-DVM (FDVM). Рассматриваются структуры данных, схема управления и функции модулей компилятора.

1Назначение компилятора

Язык Fortran DVM (FDVM) является расширением языка Фортран 77 для параллельного программирования. Расширение оформлено в виде специальных комментариев (директив DVM), которые аннотируют последовательную программу на языке Фортран 77.

На вход компилятору подается исходный код на языке Fortran DVM или HPF‑DVM. Компилятор производит следующие выходные программы.

  • Параллельная программа на языке Фортран 77 с вызовами функций системы поддержки параллельного выполнения (Lib-DVM).

  • Последовательная программа на языке Фортран 77 с вызовами функций сбора информации для отладки и оценки производительности

  • Программа на языке HPF.

2Формат командной строки

Формат команды вызова компилятора FDVM представлен ниже:

dvm fdv [ <options> ] <file-name>

Исходная программа размещается во входном файле <file-name>.fdv или <file-name>.hpf.

<options> - это указания о режимах компиляции:

-o file

Поместить выходную программу в файл file;

-s

Генерировать последовательную выходную программу;

-p

Генерировать параллельную выходную программу;

-hpf1

Генерировать выходную программу на языке HPF1;

-hpf2

Генерировать выходную программу на языке HPF2;

-v

Выдать сообщения о вызовах фаз компилятора, а также номер версии компилятора;

-w

Выдать все предупреждающие сообщения;

-Idir

Добавить директорию dir в список директорий, где осуществляется поиск include файлов.

-bindk

Задает соответствие типов данных в компиляторах с языков Фортран и Си, k – целое, обозначающее номер таблицы соответствия типов;

-dleveld[:fr-list]

Генерировать дополнительный код для отладки программы; leveld указывает уровень функциональной отладки, fr-list – список номеров фрагментов;

-elevele[:fr-list]

Генерировать дополнительный код для анализа производительности программы; . levele указывает уровень отладки производительности.

3Общая схема компилятора

В качестве инструментального средства разработки компилятора FDVM используется система Sage ++.

Sage ++ представляет собой объектно-ориентированную инструментальную систему для построения систем преобразования программ на языках Фортран, Си и Си++. Она является открытой библиотекой классов Си++, которая предоставляет пользователю набор синтаксических анализаторов, дерево разбора, таблицы символов и типов. Ядро системы составляет набор функций для реструктурирования дерева разбора и механизм (называемый unparsing) для генерации нового кода по реструктурированному внутреннему представлению.

Компилятор FDVM состоит из четырех компонент:

  • Синтаксический анализ

  • Преобразование дерева разбора

  • Генерация кода на языке Фортран 77

  • Генерация кода на языке HPF

3.1Синтаксический анализ

Синтаксический анализатор системы Sage++ для Фортрана, который базируется на GNU Bison версии языка YACC, расширен средствами обработки директив DVM. Он состоит из следующих модулей:

ftn.gram

- грамматические правила для языка Фортран

fdvm.gram

- грамматические правила для директив Fortran DVM

lexfdvm.c

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

tag

- список тэгов-признаков

tokens

- список лексем

gram1.tab.c

- синтаксический анализатор, генерируемый системой Bison

cftn.c

- главная программа (вызывает синтаксический анализатор,
открывает и закрывает необходимые файлы)

init.c

- подпрограммы инициализации

stat.c

- подпрограммы создания внутреннего представления
операторов (вершин дерева разбора)

errors.c

- печать сообщений об ошибках

sym.c

- подпрограммы работы с Таблицей символов

types.c

- подпрограммы обработки описаний переменных

lists.c

- подпрограммы построения списков

misc.c

- вспомогательные подпрограммы

hash.c

- подпрограммы работы с Кэш-таблицей

Синтаксический анализатор читает исходный файл, проверяет синтаксис, строит дерево разбора и записывает его внутреннее представление в файл с расширением .dep.

3.2Преобразование дерева разбора

Вторая фаза компиляции включает анализ и реструктурирование внутреннего представления FDVM-программы. Директивы DVM заменяются последовательностями вызовов функций системы поддержки Lib‑DVM. Затем новый код генерируется по модифицированному внутреннему представлению.

Программа «back-end» написана на языке C++ с использованием библиотеки классов Sage++.

Библиотека Sage++ организуется как иерархия классов, которая обеспечивает доступ к дереву разбора, Таблице символов и Таблице типов каждого файла из прикладного проекта. В библиотеке имеется пять основных семейств классов: Project и Files, Statements, Expressions, Symbols, Types.

Project и Files соответствуют исходным файлам. Statements соответствуют операторам языка Фортран и директивам DVM. Expressions – это выражения, содержащиеся в операторах. Symbols являются объявленными пользователем идентификаторами. Types представляют типы, которые ассоциируются с каждым идентификатором и выражением.

Описания всех классов содержатся в файле libSage++.h.

Семь модулей составляют транслятор:

dvm.cpp

- анализ и трансляция конструкций языка FDVM

funcall.cpp

- генерация вызовов функций библиотеки Lib-DVM

stmt.cpp

- реструктурирование дерева разбора

io.cpp

- трансляция операторов ввода-вывода

debug.cpp

- поддержка отладочного режима

help.cpp

- вспомогательные подпрограммы

hpf.cpp

- трансляция конструкций языка HPF-DVM

3.3Генерация кода на языке Фортран 77

Генерация нового кода на языке Фортран 77 по модифицированному внутреннему представлению осуществляется посредством функции unparse( ) класса File из библиотеки классов Sage++.

3.4Генерация кода на языке HPF

Когда исходная FDVM-программа конвертируется в программу на языке HPF, следующие подпрограммы и таблицы используются:

unparse_hpf.c

- подпрограммы генерации кода на языке HPF

low_hpf.c

- подпрограммы нижнего уровня, используемые для генерации

unparse.hpf

- таблица, управляющая генерацией кода на языке HPF2

unparse1.hpf

- таблица, управляющая генерацией кода на языке HPF1

4Основные структуры данных

Описания структур данных внутреннего представления программы содержатся в файлах:

  • bif.h (вершина дерева разбора для оператора)

  • ll.h (вершина дерева разбора для выражения)

  • symb.h (элементы Таблицы символов и Таблицы типов)

4.1Дерево разбора

На рис.4.1 представлена структура вершины дерева разбора для оператора, а на рис.4.2 - для выражения. Рис.4.4 демонстрирует фрагмент дерева разбора.

4.2Таблица символов и Таблица типов

Элементы Таблицы символов и Таблицы типов показаны на рис.4.3.

признак

идентификационный номер

индекс

глобальный номер строки

локальный номер строки

спецификатор

указатель на метку

указатель на следующий оператор

указатель на имя файла

указатель на родителя по управлению

список свойств

список вершин(список процедур)

указатель на комментарий

указатель на Таблицу символов

L-дерево выражения

R-дерево выражения

запасное поле для выражения

do-метка (используется для do)

список-по-управлению-1

список-по-управлению-2 (для if)

запасное поле

запасное поле

запасное поле

Рис. 4.1. Вершина дерева разбора, представляющая оператор (bif node).

признак

идентификационный номер

указатель на следующую вершину

указатель на элемент Таблицы типов

значение костанты

указатель на элемент Таблицы символов

L-дерево выражения

R-дерево выражения

Рис. 4.2. Вершина дерева разбора, представляющая выражение (ll -node).

признак

признак

идентификационный номер

идентификационный номер

длина

идентификатор

запасное поле

ссылка на Хэш-таблицу

запасное поле

специальный список

список использование-определение

специальный список

ссылка на базовый тип(для массива)

специальный список

границы измерений(для массива)

ссылка на следующий символ

ссылка на Таблицу типов

область действия

список использование-определение

атрибуты (маска)

флаг do-переменной

используется синт.анализатором

ссылка на значение(для констант)

специальные поля

Рис.4.3. Элементы Таблицы типов и Таблицы символов

Дерево разбора


следующий

родитель по управлению

ASSIGN_STAT

. . .

. . .


VAR_REF

...

+

...



VAR_REF

...

VAR_REF

...

Характеристики

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

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

Список файлов учебной работы

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее