Главная » Просмотр файлов » А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий

А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947), страница 163

Файл №1114947 А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий) 163 страницаА.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947) страница 1632019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Определение с! в этом проходе распространится в о!37 [16], па [23) и далее до ог3т [45), где оно должно будет подождать, поскольку !!ч [4] уже вычислено в данном проходе. При третьем проходе Н распространяется далее в пч [4),о0т [4), пч [10], ог3т [10) и пч [17), так что после трех проходов выясняется, что г! достигает блока 17.

о Из этого примера несложно вывести общий принцип. Если на рис. 9.23, а мы используем порядок "вглубь", то количество проходов, необходимое для распространения любого достигающего определения вдоль любого ацикличного пути, не более чем на единицу превышает число ребер пути, идущих от блока с ббльшим номером к блоку с меньшим. Зги ребра являются отступающими, так что необходимое количество проходов на единицу болыле глубины. Конечно, алгоритму 9.11, для того чтобы определить достижение всех определений, требуется один дополнительный проход, так что верхняя граница количества проходов, необходимых алгоритму с упорядочением блоков вглубь, в действительности на 2 превышает глубину.

Изучение" показало, что средняя глубина типичного графа потока равна 2.75. Таким образом, алгоритм сходится очень быстро. В случае задач в направлении, обратном к направлению потока, таких как анализ активных переменных, мы посещаем узлы в порядке, обратном порядку "вглубь". Таким образом, мы можем распространить использование переменной в блоке 17 в обратном направлении по пути 3 — 5 — г 19 — 35 — 16 -г 23 — 45 — 4 — 10 — 17 ' ГЗ.Е. Кппак "Ап е|пргпса! згпг!у от рОКТКАга ргоягапгт', Яа7пеаге — Ргасггсе аагу рхреглеасе 1:2 !!97!), рр. !05-!33.

801 9.б. Циклы в графах потоков за один проход до пч [4~, где мы должны дождаться следующего прохода, чтобы достичь опт [45]. При втором проходе мы достигаем пч [101, а на третьем проходим от Оит [35~ до О0т (31 В общем случае, если мы выберем порядок посещения узлов при проходе, обратный нумерации вглубь, то в связи с тем, что распространение в данной ситуации по уменьшающейся последовательности номеров выполняется за один проход, нам будет достаточно количества проходов, на единицу превышающего глубину. Описанная граница представляет собой верхнюю границу для всех задач, в которых циклические пути не добавляют информацию к анализу. В частных случаях, таких как задача о доминаторах, алгоритм сходится даже еще быстрее.

Если входной граф потока приводим, корректное множество доминаторов для каждого узла получается при первой итерации алгоритма потока данных, который посещает узлы в порядке в глубину. Если заранее не известно, приводим ли входной граф, потребуется дополнительная итерация для того, чтобы убедиться, что решение сошлось. 9.6.8 Упражнения к разделу 9.6 Упражнение 9.6.1. Для графа потока на рис. 9.10 (см. упражнения к разделу 9.1) выполните следующее. а) Вычислите отношение доминирования.

б) Найдите для каждого узла его непосредственный доминатор. в) Постройте дерево доминаторов. г) Найдите упорядочение вглубь графа потока. д) Укажите в вашем ответе к п. е наступающие, отступающие, поперечные ребра и ребра дерева. е) Является ли данный граф потока приводимым? ж) Вычислите глубину графа потока. з) Найдите естественные циклы в графе потока. Упражнение 9.6.2.

Повторите упражнение 9.6.1 для следующих графов потоков. а) Граф потока на рис. 9.3. б) Граф потока на рис. 8.9. в) Граф потока, разработанного вами при выполнении упражнения 8.4.1. 802 Глава 9. Машинно-независимые оптимизации г) Граф потока, разработанного вами при выполнении упражнения 8.4.2. ! Упражнение 9.6.3. Докажите справедливость следующих утверждений об отношении пот. а) Если а аот 6 и Ь аот с, то а г2от с (трапзитивность). б) Невозможно, чтобы одновременно выполнялось а аот 6 и 6 аот и, если только а не совпадает с 6 (антисимметрия).

в) Если а и 6 являются двумя доминаторами и, то должно выполняться либо а аот 6, либо Ь аот а. г) Каждый узел п, за исключением входного, имеет единственный непосредственпый доиииатор — доминатор, который ближе других к п вдоль любого ацикличного пути от входного узла к и. ! Упражнение 9.6.4. На рис. 9.42 приведено одно из представлений вглубь графа потока на рис. 9.38. Сколько имеется других представлений данного графа потока? Напомним, что представления различаются порядком дочерних узлов. !! Упражнение 9.6.5. Докажите, что граф потока приводим тогда и только тогда, когда граф потока ацикличен после удаления из него всех обратных ребер (у которых заголовок доминирует над хвостом). ! Упражнение 9.6.6.

Полный граф потока (сошр!е!е !!отч 8гарй) с и узлами содержит дуги ! — т' между любыми двумя узлами ! и ?' (в обоих направлениях). Для каких значений п такой граф является приводимым? ! Упражнение 9.6.7. Полный аииклический граф потока (сошр!е!е асус11с бов 8гарй) с и узлами 1,2,..., и содержит дуги ! — у' для всех узлов ! и з, таких, что ! < у. Узел 1 является входным. а) Для каких значений п такой граф является приводимым? б) Изменится ли ваш ответ на вопрос а, если к каждому узлу ! добавить петлю ! — ~ !? ! Упражнение 9.6.8.

Естественный цикл для обратного ребра п — 6 определен как 6 плюс множество узлов, которые могут достичь и, не проходя через 6. Покажите, что 6 доминирует над всеми узлами естественного цикла лля п — Ь. !! Упражнение 9.6.9. Мы утверждаем, что граф потока на рис. 9.45 неприводим. Если дуги заменить путями непересекающихся множеств узлов (за исключением конечных точек), то граф останется неприводимым.

В действительности узел 1 не обязан быть входным; он может быть любым узлом, достижимым из входного узла 803 9.7. Анализ ла основе областей по пути, промежуточные узлы которого не являются частью никакого из четырех явно показанных на рисунке путей. Докажите обратное — что любой неприводнмый граф потока содержит подграф наподобие показанного на рис.

9.45, но с дугами, которые могут быть заменены путями по непересекающимся множествам узлов, а узел ! быть любым узлом, достижимым из входной точки по пути, который не включает узлы из четырех других путей. !! Упражнение 9.6.10. Покажите, что любое представление вглубь любого неприводимого графа содержит отступающее ребро, не являющееся обратным. !! Упражнение 9.6.11.

Покажите, что если для любых функций )' и д и значения а выполняется условие )' (а) Л д (а) Л а < ~ (д (а)), то обобщенный итеративный алгоритм 9.25 с итерациями в порядке "вглубь*' сходится за количество проходов, на 2 превышающее глубину. ! Упражнение 9.6.12. Найдите неприводимый граф потока с двумя различными РЕБТ, которые имеют разную глубину. ! Упражнение 9.6.13. Докажите следующие утверждения. а) Если определение 4 находится в пч )В), то существует некоторый ациклический путь от блока, содержащего д, к блоку В, такой, что Н находится во всех множествах пч и опт вдоль этого пути. б) Если выражение х + у недоступно на входе в блок В, то существует некоторый ациклический путь, демонстрирующий этот факт.

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

9.7 Анализ на основе областей Итеративный алгоритм анализа потока данных, рассматривавшийся нами,— всего лишь один из подходов к решению задач потоков данных. Сейчас мы рассмотрим еще один подход — анализ на основе областей (ге81оп-Ьазед апа)уз!з). Вспомним, что в случае итеративного подхода мы создавали передаточную функцию для базовых блоков, затем находили решение путем многократного прохода по блокам.

Анализ на основе областей вместо передаточной функции для отдельных блоков находит передаточные функции, которые подытоживают выполнение 804 Глава 9. Машинно-независимые оптимизации все больших и больших областей программы. В конечном счете строится и применяется передаточная функция для всей процедуры целиком, применяя которую, мы непосредственно получаем требуемые нам значения потока данных. Структура потока данных, использующая итеративный алгоритм, определяется полурешеткой значений потока данных и семейством передаточных функций, замкнутых относительно композиции. Анализ же на основе областей требует большего количества элементов. Соответствующая структура включает как полурешетку значений потока данных, так и полурешетку передаточных функций, которая должна располагать оператором сбора, оператором композиции и оператором замыкания.

Все эти элементы будут рассмотрены нами в разделе 9.7.4. Анализ на основе областей в особенности применим к задачам потоков данных, в которых пути содержат циклы, которые могут изменять значения потоков данных. Оператор замыкания позволяет более эффективно по сравнению с итеративным анализом подытожить влияние цикла. Этот метод оказывается эффективным и при межпроцедурном анализе, когда передаточные функции, связанные с вызовом процедуры, могут рассматриваться так же, как и перелаточные функции, связанные с базовыми блоками.

9.7.1 Области В процессе анализа на основе областей программа рассматривается как иерархия областей (ге81оп), которые грубо можно считать частями графа потока, имею- шими единственную точку входа. Такая концепция рассмотрения кода как иерархии областей должна быть интуитивно понятна, поскольку процедура, составленная из блоков, естественным образом организуется в виде иерархии областей. Каждая инструкция в блочно-структурированной программе является областью, поскольку поток управления может достичь инструкции только через ее начало. Каждый уровень вложенности инструкций соответствует уровню в иерархии областей. Формально область (ге81оп) графа потока представляет собой набор узлов Х и ребер Е, таких, что 1.

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

Список файлов книги

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