Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » 2006. Межпроцедурная нумерация значений

2006. Межпроцедурная нумерация значений

PDF-файл 2006. Межпроцедурная нумерация значений Конструирование компиляторов (53254): Статья - 7 семестр2006. Межпроцедурная нумерация значений: Конструирование компиляторов - PDF (53254) - СтудИзба2019-09-18СтудИзба

Описание файла

PDF-файл из архива "2006. Межпроцедурная нумерация значений", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

ООО "ИНТЕРСОЦИОИНФОРМ"*** КОМПЬЮТЕРЫ В УЧЕБНОМ ПРОЦЕССЕ *** № 5, май 2005 ***--------- СТРАННЫЙ СПЕЦИАЛЬНЫЙ ЖУРНАЛ ДЛЯ ПЫТЛИВЫХ УМОВ ЛЮБОГО ВОЗРАСТА---------АНАЛИЗ “МЕЖПРОЦЕДУРНАЯНУМЕРАЦИЯ ЗНАЧЕНИЙ”А.Ю.Дроздов,А.В.КанИнститут микропроцессорных вычислительных систем РАН, МоскваE-mail: sasha@mcst.ru; akan@mcst.ru1. ПРОМЕЖУТОЧНОЕ ПРЕДСТАВЛЕНИЕКомпилятор – это программа, которая переводит программу, представленную на одном языке, на семантически эквивалентную программу на другом языке. В процессе такого преобразования компилятором, как правило, используются одно или несколькопромежуточных представлений программы [1]. Именно над промежуточным представлением производятся различные виды анализов и оптимизаций. В статье будет описанопромежуточное представление, используемое для анализа “Межпроцедурная нумерациязначений”.За основу промежуточного представления взято представление EIR, которое применяется в языковом оптимизирующем компиляторе ecf_opt, разрабатываемом компаниейElbrus Inc.

(Россия) [2, 3].EIR (Elbrus Intermediate Representation) является высокоуровневым машиннонезависимым промежуточным представлением семантики, предназначенным для представления семантики ряда входных универсальных языков высокого уровня с возможностью последующей генерации машинно-зависимых представлений ряда платформ.1.1. Управляющий графУправляющий граф процедуры является аналитической структурой данных, отражением результатов анализа топологии и семантики программы. Каждый узел управляющего графа соответствует некоторому линейному участку.

Управляющий граф являетсяориентированным. Каждая дуга такого графа соответствует возможности передачиуправления в программе между линейными участками.Линейным участком называется упорядоченное множество операций. Если множество не пусто, то выделяются входная и выходная операции и выдвигаются требования, которым должен удовлетворять линейный участок:– Связность: все операции линейного участка, включая конечную, достижимы из начальной операции без выхода за пределы линейного участка; из всех операций линейногоучастка, включая начальную достижима конечная операция.– Замкнутость: выход из линейного участка минуя конечную операцию или вход влинейный участок минуя начальную операцию невозможен.– Полнота: линейному участку принадлежат все операции проходимые при обходесверху от начальной операции к конечной и при обходе снизу от конечной операции кначальной.– Одноуровневость: линейный участок не содержит внутри себя других линейныхучастков.тел./факс: (095) 917-24-70-1-a88@narod.ru; http://a88.narod.ruООО "ИНТЕРСОЦИОИНФОРМ"*** КОМПЬЮТЕРЫ В УЧЕБНОМ ПРОЦЕССЕ *** № 5, май 2005 ***--------- СТРАННЫЙ СПЕЦИАЛЬНЫЙ ЖУРНАЛ ДЛЯ ПЫТЛИВЫХ УМОВ ЛЮБОГО ВОЗРАСТА---------– Однозначность: каждой операции множества конечных операций взаимно однозначно соответствует операция множества начальных операций и наоборот; линейныйучасток, которому принадлежит операция, определяется однозначно обходом в любомнаправлении.– Ацикличность: ни одна операция линейного участка не может быть достигнута припроходе по управлению от самой себя без выхода за пределы линейного участка.– В линейном участке может быть не более одной операции записи.Все узлы графа делятся на два типа: обычные узлы и узлы слияния.

Обычный узелможет иметь не более одного предшественника. Узлы слияния могут иметь произвольноечисло предшественников. Линейные участки, соответствующие узлам слияния не содержат операций, кроме псевдоопераций JOIN.Один узел графа помечен как стартовый, такой узел не имеет входных дуг. Стартовыйузел соответствует линейному участку, с которого начинается выполнение процедуры.Один узел графа помечен как стоповый, в него сведены все дуги, по которым может происходить выход из процедуры.Граф может содержать циклы. Представим, что мы обходим граф “вширь” помечаяуже рассмотренные узлы. В процессе такого обхода могут встретиться дуги, ведущие куже помеченному узлу. Такие дуги будем называть обратными.Рис. 1.

Управляющий граф.тел./факс: (095) 917-24-70-2-a88@narod.ru; http://a88.narod.ruООО "ИНТЕРСОЦИОИНФОРМ"*** КОМПЬЮТЕРЫ В УЧЕБНОМ ПРОЦЕССЕ *** № 5, май 2005 ***--------- СТРАННЫЙ СПЕЦИАЛЬНЫЙ ЖУРНАЛ ДЛЯ ПЫТЛИВЫХ УМОВ ЛЮБОГО ВОЗРАСТА---------Для дальнейшего изложения необходимо ввести понятие множество IDF (immediatedominant frontiers) для узла.

IDF для узла x – это множество ближайших узлов слияния,встречающихся на всех путях от узла x до стопового узла.Рис. 2. Множества IDF.1.2. Операционная семантикаОперации делятся на две группы – те, которые вырабатывают результат (результативные), и те, которые результата не вырабатывают.

Будем считать, что операция может вырабатывать не более одного результата. Операции будут записываться в виде:OP_NAME Ri1 Ri2 ... Rin → Rim,где Ri1 Ri2 ... Rin – регистры-аргументы операции, Rim – результат.Имя операции имеет контекстно-независимую семантику: при любых условиях, еслиоперации с одним именем подавать в соответствующие аргументы одинаковые значения,будет получаться одинаковое значение результата.Вызов процедуры осуществляется операцией CALL.тел./факс: (095) 917-24-70-3-a88@narod.ru; http://a88.narod.ruООО "ИНТЕРСОЦИОИНФОРМ"*** КОМПЬЮТЕРЫ В УЧЕБНОМ ПРОЦЕССЕ *** № 5, май 2005 ***--------- СТРАННЫЙ СПЕЦИАЛЬНЫЙ ЖУРНАЛ ДЛЯ ПЫТЛИВЫХ УМОВ ЛЮБОГО ВОЗРАСТА---------CALL Ri0 Ri1 Ri2 ...

Rin → (Rim),где Ri0 – адрес вызываемой процедуры, либо символьное имя вызываемой процедуры; Ri1Ri2 ... Rin – регистры-аргументы операции – параметры, передающиеся в вызываемуюфункцию; Rim – возвращаемое процедурой значение.Имя операции CALL имеет контекстно-независимую семантику; тем не менее, еслиоперации с одним именем подавать в соответствующие аргументы одинаковые значения,возможны различные значения результата.Работа с памятью осуществляется посредством чтения/записи объектов. Объект – этонепрерывная последовательность N байт в памяти, причём если объект записан начиная садреса X, то в диапазон адресов [X, X+N–1] другие объекты не попадают.

Таки образом,вся работа с памятью осуществляется через операции READ x→Ri1 и WRITE Ri1→x (читать значение объекта x в регистр Ri1 и записать значение в регистре Ri1 в объект x). Объекты могут быть глобальными и локальными (иметь признак глобальности/не иметь этого признака).

Глобальный объект доступен из любой процедуры программы. Локальныйобъект доступен только из процедуры, в которой он описан.Рис. 3. Код на Си – промежуточное представление.Итак, в рамках анализа нас будут интересовать только результативные операции, которые, в свою очередь, могут быть четырех типов: READ, WRITE, CALL и др.Повторим, что описанное промежуточное представление является необходимым дляпроведения анализа “Межпроцедурная нумерация значений” алгоритмом, приведенным внастоящей работе.

Вместе с тем, оно является достаточно общим, − так, всегда (почтивсегда) удаётся отобразить любое используемое промежуточное представление к вышеуказанному, без потери семантики программы.2. НУМЕРАЦИЯ ЗНАЧЕНИЙ2.1. Основные понятияНумерация значений есть технология, суть которой заключается в следующем: каждому значению, вычисляемому в программе, ставится в соответствие число, называемое“номер значения”, таким образом, что два значения получают один номер, если компилятор может доказать, что эти значения равны для всех возможных входных данных в программу [4].тел./факс: (095) 917-24-70-4-a88@narod.ru; http://a88.narod.ruООО "ИНТЕРСОЦИОИНФОРМ"*** КОМПЬЮТЕРЫ В УЧЕБНОМ ПРОЦЕССЕ *** № 5, май 2005 ***--------- СТРАННЫЙ СПЕЦИАЛЬНЫЙ ЖУРНАЛ ДЛЯ ПЫТЛИВЫХ УМОВ ЛЮБОГО ВОЗРАСТА---------Номера присваиваются значениям, но значения в программе вырабатываются операциями.

Таким образом, можно говорить о присвоении номеров значений операциям (длярезультативных операций). Операции, вырабатывающие одинаковые значения, называются эквивалентными. Такие операции получат один номер значения. Всё множество результативных операций, разбивается на подмножества – классы эквивалентности (конгруэнтности).Номера значений будут представляться целыми числами, начиная с UNDEF_VAL=−1.Номер UNDEF_VAL=−1 будет обозначать неопределённый номер, когда ничего нельзясказать о значении, которое вырабатывает операция. Две операции с одним и тем же номером, равным UNDEF_VAL, не являются эквивалентными.Функция int GetNewValNum(void) будет вырабатывать номер значения, который ещёне был использован.Сформулируем задачу анализа: имеется управляющий граф процедуры (см.

раздел 1),требуется присвоить операциям номера значений, в рамках ограничений, указанных впредыдущем абзаце.Известны различные алгоритмы для нумерации значений в процедуре. Опишем алгоритм, использующий хеширование операций.2.2. Моделирование работа с памятьюРабота с памятью на промежуточном представлении была описана в разделе 1.2 (через записи/чтения объекта). Для нужд анализа будем поддерживать структуру, моделирующую работу с памятью. Она позволит запоминать когда (в каком узле), куда (в какойобъект) и что (какой номер значения) было записано. Соответственно, когда встретитсяоперация чтения, можно будет узнать, какое значение было записано, в ближайшем узлезаписи, доминирующим узел чтения.Для работы с такой моделью будут использоваться функции:void SetObjValNum(node, obj, val_num) – запоминание того факта, что в узле nodeпроисходит запись в объект obj, значения, которое имеет номер значения val_num.int GetObjValNum(node, obj) – получает номер значения, которое было записано вобъект в ближайшем узле, доминирующем узел node.Если происходит чтение объекта, в который не было записи, то GetObjValNum возвращает UNDEF_VAL.Проблема возникает в местах слияния ветвей исполнения программы.

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