fdvmDDr (1158419), страница 2

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

Текст из файла (страница 2)

a

...

b

...

c

...

Таблица символов

Рис. 4.4. Внутреннее представление оператора a = b + c.

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

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

Ниже представлена схема вызова функций верхнего уровня модуля dvm.cpp :

m ain initialize

initVariantNames

initLibNames

initDVM

TranslateFileDVMTransFunc

unparse (class File) InsertDebugStat

int main (

int
char

argc,
*argv[] );

Функция обрабатывает параметры компиляции и устанавливает режимы компиляции. Она инициализирует структуры данных компилятора, реструктурирует дерево разбора в соответствии с режимами компиляции, вызывая для этого функцию TranslateFileDVM( ), и генерирует новый код на Фортране 77 по реструктурированному внутреннему представлению с помощью функции unparse( ) класса SgFile. Функция возвращает 1, если в программе обнаружены ошибки.

void TranslateFileDVM ( SgFile *f )

f

- указатель на программный файл

Если требуется сгенерировать параллельную программу (опция –p), тогда вызывается функция TransFunc( ) , иначе вызывается функция InsertDebugStat( ).

void TransFunc ( SgStatement *func )

func

- указатель на заголовок процедуры

Сканирует операторы процедуры в лексическом порядке, пока не встретится последний оператор процедуры.

Обработка операторов и директив спецификации.

Директивы DISTRIBUTE включаются в список. Строятся деревья выравнивания, когда обрабатываются директивы ALIGN.

При сканировании операторов и директив спецификации, генерируются обращения к функциям системы поддержки Lib-DVM для создания распределенных массивов, которые вставляются в процедуру перед первым исполняемым оператором. Функция GenDistArray( ) создает распределенный массив (объект Lib-DVM ) для массива с атрибутом DISTRIBUTE, а также для всех массивов, непосредственно или косвенно выровненных на него.

Обработка исполняемых операторов и директив.

Все ссылки на элементы распределенных массивов в операторах присваивания, CALL , арифметический IF, логический IF, IF-THEN, ELSE_IF и вычисляемый GOTO линеаризуются.

Директива DVM заменяется последовательностью вызовов функций системы поддержки Lib-DVM. Когда новый оператор вставляется в программу, выполняется, если это необходимо, реструктурирование графа управления (перемещение или замена меток, замена оператора логический IF конструкцией IF...THEN...ENDIF и т.п.). Функции ReplaceContext( ), doAssignStmtAfter( ), InsertNewStatementAfter( ), InserNewStatementBefore( ) предназначены для включения новых операторов в дерево разбора и его реструктурирования.

После обработки последнего оператора процедуры, создаются операторы объявления служебных переменных, которые используются для передачи аргументов и запоминания значения функций, буферизации ввода-вывода и адресации распределенных массивов. Они включаются в ту часть процедуры, где расположены спецификации (DeclareVarDVM( )).

Список вызываемых функций:

TempVarDVM

ChangeDistArrayRef

DeclareVarDVM

ChangeDistArrayRef_Left

RTLInit

DebugVarArrayRef

RTLExit

DebugVarArrayRef_Left

BeginBlock

ChangeArg_DistArrayRef

EndBlock

DebugArg_VarArrayRef

GetAM

ReplaceAssignByIf

GetVM

ReplaceContext

doDisRuleArrays

ParallelLoop

GenDistArray

AddToGroupNameList

GenAlignArray

AllocateArray

AlignTree

AssignPointer

InsertNewStatementBefore

CreateBoundGroup

InsertNewStatementAfter

ShadowList

doAssignStmt

Calculate

doAssignStmtAfter

hasNewValueClause

doAssignTo_After

StartBound

Extract_Stmt

WaitBound

ContinueWithLabel

SendBoun

RemoteAccessEnd

CreateReductionGroup

GoRoundEntry

ReductionList

BeginBLockForEntry

StartRed

initMask

WaitRed

ReplaceDoLabel

ReductionVarsStart

Error

doAlignRule

err

RealignArray

addToStmtList

RealignArr

ReplaceDoNestLabel_Above

DistObjectRef

CloseDoInParLoop

RedistributeArray

CloseParLoop

control_list_open

EndParLoop

ReplaceByIfStmt

EndPl

InsertSendIOSTAT

isDoEndStmt

InsertSendInquire

CloseLoop

InsertSendInputList

DebugLoop

IOcontrol

SeqLoopBegin

TestIOList

SeqLoopEndInParLoop

IO_ThroughBuffer

OverLoopAnalyze

D_Skpbl

SeqLoopEnd

D_Lnumb

DeleteObject

D_Fname

OpenInterval

St_Binter

CloseInterval

St_Einter

Value

St_Biof

lastStmtOfDo

St_Eiof

AddRemoteAccess

St_Eloop

RemoteVariableList

BeginDebugFragment

RankOfSection

EndDebugFragment

Rank

ArrayHeader

isListOfArrays

TypeControl

ReconfPS

CreateTaskArray

InitGroups

SetDoVar

InitHeap

PSReference

hasOntoClause

SearchDistArrayRef

DebugTaskRegion

CloseTaskRegion

StartTask

isParallelLoopEndStmt

StopAM

CreateBG

doIfThenConstrForPrefetch

LoadBg

InitRemoteGroups

IsLIFReductionOp

INDLoopBegin

IsReductionOp

IEXLoopAnalyse

OffDoVarsOfNest

IndependentLoop

void InsertDebugStat ( SgStatement *func )

func

- указатель на заголовок процедуры

Функция генерирует последовательную программу с вызовами функций отладчика и анализатора производительности. Процессом генерации новых операторов управляют параметры компиляции (-e… и -d…).

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

Если пользователь указал в командной строке не нулевой уровень отладки, операторы, включающие выражения (присваивания, CALL , арифметический IF и т.п.), окружаются вызовами функций отладчика для контроля значений переменных. Функция вставляет вызовы функций отладчика в начало и конец каждого параллельного цикла и вызовы функций анализатора производительности в начало и конец каждого интервала.

Список вызываемых функций:

TempVarDVM

DebugVarArrayRef

RTLInit

DebugVarArrayRef_Left

RTLExit

DebugArg_VarArrayRef

InsertNewStatementBefore

SkipParLoopNest

InsertNewStatementAfter

ReplaceContext

doAssignStmtAfter

ParallelLoop_Debug

Extract_Stmt

isParallelLoopEndStmt

addToStmtList

AddToGroupNameList

ReplaceDoNestLabel_Above

CreateReductionGroup

CloseDoInParLoop

ReductionList

CloseParLoop

D_Lnumb

isDoEndStmt

D_Fname

ReplaceFuncCall

D_Skpbl

InitRemoteGroups

D_Iter_ON

CloseLoop

St_Binter

DebugLoop

St_Einter

SeqLoopBegin

St_Biof

SeqLoopEndInParLoop

St_Eiof

OverLoopAnalyze

St_Eloop

SeqLoopEnd

DeclareVarDVM

OpenInterval

DeleteObject

CloseInterval

Error

Value

err

initMask

InitGroups

isLIFReductionOp

IsReductionOp

IEXLoopAnalyze

IndependentLoop_Debug

BeginDebugFragment

SkipIndepLoopNest

EndDebugFragment

DebugTaskRegion

INDReductionDebug

CloseTaskRegion

void initialize ( )

Функция инициализирует переменные компилятора, используемые в отладочном режиме.

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

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

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