debugDDr (1158410), страница 9

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

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

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

Прототипы функций модуля накопления трассировки следующие:

void trc_put_beginstruct( char *File, unsigned long Line, long No, byte Type, byte Rank, long *Init, long *Last, long *Step )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

No

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

Type

тип конструкции (параллельный или последовательный цикл, область задач);

Rank

размерность конструкции;

Init

массив начальных значений итерационных переменных;

Last

массив конечных значений итерационных переменных;

Step

массив значений шагов приращения итерационных переменных.

Функция формирует запись начала исполняемой конструкции программы.

void trc_put_endstruct(char *File, unsigned long Line, long No, unsigned long BegLine)

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

No

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

BegLine

номер строки начала конструкции.

Функция формирует запись завершения исполняемой конструкции программы.

void trc_put_iteration( AddrType *index )

index

массив указателей на итерационные переменные.

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

void trc_put_iteration_flash_par( byte Rank, long *Index, long LI )

Rank

размерность витка;

Index

массив значений итерационных переменных;

LI

абсолютный индекс витка.

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

void trc_put_iteration_flash(void)

Функция помещает в трассировку текущую отложенную запись начала витка. Вызывается из функций trc_put_beginloop() и trc_put_variable().

void trc_put_readvar( char *File, unsigned long Line, char *Operand, long Type, void *Value, byte Reduct )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

Type

тип переменной;

Value

адрес переменной;

Reduct

флаг обращения к редукционной переменной.

Функция формирует запись обращения к переменной на чтение.

void trc_put_prewritevar( char *File, unsigned long Line, char *Operand, long Type, byte Reduct )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

Type

тип переменной;

Reduct

флаг обращения к редукционной переменной.

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

void trc_put_postwritevar( char *File, unsigned long Line, char *Operand, long Type, void *Value, byte Reduct )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

Type

тип переменной;

Value

адрес переменной;

Reduct

флаг обращения к редукционной переменной.

Функция формирует запись завершения вычисления нового значения и модификации переменной.

void trc_put_reductvar( char *File, unsigned long Line, long Type, void *Value )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

Type

тип переменной;

Value

адрес редукционной переменной.

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

void trc_put_variable( char *File, unsigned long Line, char *Operand, byte iType, long Type, void *Value, byte Reduct )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

iType

тип записи;

Type

тип переменной;

Value

адрес переменной;

Reduct

флаг обращения к редукционной переменной.

Общая функция формирования записи обращения к переменной.

void trc_put_skip( char *File, unsigned long Line )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе.

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

6.5.4Модуль чтения трассировки

Функции модуля чтения трассировки предназначены для чтения и разбора файла с эталонной трассировки и конфигурационного файла. Для формирования записей в таблице трассировочных записей используются функции модуля накопления трассировки.

Прототипы функций чтения трассировки следующие:

void trc_rd_header( DVMFILE *hf, char* szFileName )

hf

дескриптор файла;

szFileName

имя читаемого файла (участвует в сообщениях об ошибках).

Функция читает из файла структуру и параметры трассировки исполняемых конструкций программы.

void trc_rd_trace( DVMFILE *hf, char* szFileName, unsigned long StrBase )

hf

дескриптор файла;

szFileName

имя читаемого файла (участвует в сообщениях об ошибках);

StrBase

номер строки файла, с которой начинаются записи трассировки.

Функция читает файл с трассировкой и формирует в памяти таблицу трассировочных записей.

unsigned long trc_rd_gets( DVMFILE *hf )

hf

дескриптор файла.

Функция читает следующую запись из файла. Возвращает число обработанных строк.

short trc_rd_search_key(char *str)

str

строка с ключевым словом.

Функция возвращает код, соответствующий строке с ключевым словом, или –1, если ключевое слово не найдено.

char* trc_rd_split( char *Str, char *Format, … )

Str

разбираемая строка;

Format

синтаксис строки;

адреса переменных, принимающих разобранные параметры строки.

Функция производит разбор строки на параметры в соответствии с указанным синтаксисом.

В форматной строке Format могут использоваться следующие символы:

  • & – ключевое слово. В соответствующую переменную будет записан код ключевого слова.

  • % – необязательное число. В соответствующую переменную будет записано разобранное значение.

  • ! – обязательное число. В соответствующую переменную будет записано разобранное значение.

  • #<type> – обязательное число указанного типа. В соответствующую переменную будет записано разобранное значение. В качестве <type> можно указать один из следующих символов:

      • i – int

      • l – long

      • f – float

      • d – double

  • @ – произвольная строка. Соответствующая переменная должна быть указателем на буфер, куда будет записана строка.

6.5.5Модуль сравнения трассировки

Функции модуля сравнения трассировки сравнивают события программы с соответствующими записями эталонной трассировки.

Прототипы функций модуля сравнения трассировки следующие:

void trc_cmp_beginstruct( char *File, unsigned long Line, long No, byte Type, byte Rank, long *Init, long *Last, long *Step )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

No

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

Type

тип конструкции (параллельный или последовательный цикл, область задач);

Rank

размерность конструкции;

Init

массив начальных значений итерационных переменных;

Last

массив конечных значений итерационных переменных;

Step

массив значений шагов приращения итерационных переменных.

Функция сравнивает событие начала исполняемой конструкции программы с соответствующей эталонной записью трассировки.

void trc_cmp_endstruct(char *File, unsigned long Line, long No, unsigned long BegLine)

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

No

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

BegLine

номер строки начала конструкции.

Функция сравнивает событие завершения исполняемой конструкции программы с соответствующей эталонной записью трассировки.

void trc_cmp_iteration( AddrType *index )

index

массив указателей на итерационные переменные.

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

void trc_cmp_iteration_flash(void)

Функция сравнивает текущую отложенную запись начала витка цикла или задачи с эталонной записью трассировки. Вызывается из функций trc_cmp_beginloop() и trc_cmp_variable().

void trc_cmp_readvar(char *File, unsigned long Line, long Type, void *Value, byte Reduct)

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

Type

тип переменной;

Value

адрес переменной;

Reduct

флаг обращения к редукционной переменной.

Функция сравнивает событие обращения к переменной на чтение с соответствующей эталонной записью трассировки.

void trc_cmp_prewritevar( char *File, unsigned long Line, long Type, byte Reduct )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

Type

тип переменной;

Reduct

флаг обращения к редукционной переменной

Функция сравнивает событие начала вычисления значения переменной с соответствующей эталонной записью трассировки.

void trc_cmp_postwritevar( char *File, unsigned long Line, long Type, void *Value, byte Reduct )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

Type

тип переменной;

Value

адрес переменной;

Reduct

флаг обращения к редукционной переменной.

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

void trc_cmp_reductvar( char *File, unsigned long Line, long Type, void *Value )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

Type

тип переменной;

Value

адрес редукционной переменной.

Функция сравнивает событие получения результата редукционной операции с соответствующей эталонной записью трассировки.

void trc_cmp_variable( char *File, unsigned long Line, enum_TraceType iType, long vType, void *Value, byte Reduct )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе;

Operand

имя переменной;

iType

тип записи;

Type

тип переменной;

Value

адрес переменной;

Reduct

флаг обращения к редукционной переменной.

Общая функция сравнения события обращения к переменной с соответствующей эталонной записью трассировки.

void trc_cmp_skip( char *File, unsigned long Line )

File

имя файла с исходной DVM-программой;

Line

номер строки в DVM-программе.

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

long trc_cmp_forward(long CurTraceRecord, enum_TraceType iType)

CurTraceRecord

номер текущей записи трассировки;

iType

тип записи, до которого производится смещение.

Функция осуществляет поиск ближайшей записи с указанным типом, начиная с текущей записи. Возвращает номер найденной записи. Если между текущей записью и искомой встречаются записи с типом ‘начало конструкции’, ‘конец конструкции’ или ‘начало витка’ или запись с указанным типом отсутствует, то функция возвращает -1.

6.5.6Модуль обработки редукции

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

typedef struct tag_REDUCT_INFO

{

char*

Current;

char*

Initial;

byte

StartReduct;

s_REDVAR*

RVar;

}

REDUCT_INFO;

Current

указатель на буфер, содержащий промежуточный результат редукционной операции;

Initial

указатель на буфер, содержащий начальное значение редукционной переменной;

StartReduct

флаг начала редукционной операции над переменной;

RVar

указатель на RTL-структуру, описывающую редукционную переменную.

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

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

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

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