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

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

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

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

К тому моменту, когда на первой итерации мы выяснили, что да достигает конца В4, значения )м [Вз] и опт [Вз] были уже вычислены. 733 9.2. Введение в анализ потоков данных После второй итерации никаких изменений в опт не вносится, так что после третьего прохода алгоритм завершает свою работу, оставляя 1м и опт такими, какими они показаны в последних двух столбцах на рис.

9.15. а 9.2.5 Анализ активных переменных Некоторые улучшающие код преобразования зависят от информации, вычисляемой в направлении, противоположном потоку управления программы; один такой пример мы сейчас и рассмотрим. В анализе активных переменнык (11чезапайе апа!уз(з) для переменной х и точки р мы хотим выяснить, может ли значение х из точки р использоваться вдоль некоторого пути в графе потока, начинающемся в точке р. Если может, то мы говорим, что переменная х акгпивна (жива) в точке р, если нет — неакеивна (мертва). Важное применение анализа активных переменных — при распределении регистров для базовых блоков. Этот вопрос уже поднимался в разделах 8.6 и 8,8, После того как значение вычислено в регистр и будет использоваться в блоке, его не обязательно сохранять в памяти, если это значение будет мертвым на выходе из блока. Если все регистры заняты, а нам нужен свободный регистр, то, в первую очередь, используются регистры с мертвыми значениями, поскольку эти значения не надо сохранять.

Мы определим уравнения потока данных непосредственно в терминах пч[В] и опт[В[, которые представляют собой множества активных переменных в точках непосредственно перед блоком В и после него соответственно. Эти уравнения могут быть также выведены путем определения передаточных функций для отдельных инструкций с последующей их композицией для получения передаточной функции блока в целом. Определим 1, в(е~н — множество переменных, определенных (те. получающих значения) в блоке В до любых их использований в этом блоке; 2.

ивен — множество переменных, значения которых могут использоваться в блоке В до любых определений этих переменных. Пример 9.13. Например, блок Вз на рис. 9.13 использует(. Он также использует з до переопределения этой переменной, если только ( и з не являются псевдонимами друг друга. В предположении, что среди переменных на рис. 9.13 псевдонимов нет, ивен, = ((,Д. Кроме того, блок Вз определяет( и з. В том же предположении отсутствия псевдонимов Ые(н, —— (г, Я. о Как следствие этих определений любая переменная в ивен должна рассматриваться как активная на входе в блок В, в то время как переменные из Ые)н в начале блока В мертвы.

734 Глава 9. Машинно-независимые оптимизации Значит, уравнения, связывающие ЫеГ и изе с неизвестными ~м и опт, определяются следующим образом: пч [Вход] = а И для всех базовых блоков В, отличных от выходного, пч [В] = изен 0 (опт [В] — ЙеЯ оит[В] = Ц пч[Я] Первое уравнение определяет граничное условие, состоящее в том, что активных переменных при выходе из программы нет. Второе уравнение гласит, что переменная является активной при входе в блок, если она используется в блоке до переопределения или если она активна на выходе из блока и не переопределена в нем.

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

° Однако поток информации в случае активных переменных идет "назад", обратно направлению потока управления, поскольку в этой задаче мы хотим убедиться, что использование переменной х в точке р передается всем точкам, предшествующим р вдоль путей выполнения, так что об использовании х становится известно в предшествующих точках, до ее использования. Для решения задачи в обратном направлении вместо опт [Вход] мы инициализируем ПЧ [ВЫХОд]. Множества ПЧ и Опт меняются ролями, а изе и ЫеГ заменяют соответственно яеп и /аП. Как и в случае достигающих определений решение уравнений для активных переменных не обязательно единственное, и мы хотим найти решение с наименьшим множеством активных переменных. Использующийся для этого алгоритм, по сути, представляет развернутую в обратном направлении версию алгоритма 9.11.

Алгоритм 9.14. Анализ активных переменных Вход: граф потока с множествами Ые1' и изе, вычисленными для каждого базового блока. 9.2. Введение в анализ потоков данных 735 Выход: множества переменных, активных на входе (бч [В)) и выходе (опт [В)) каждого блока В графа потока.

Метод: выполнить программу, приведенную на рис. 9.16. о !н [Выход[ = а; !ог (каждый базовый блок В, отличный от выходного) !н [В[ = о; зк!з!1е (Внесены изменения в пч) !ог !каждый базовый блок В, отличный от выходного) 1 оот[В) =[) „„„,„„,, !н[В1; !н [В) = изен О (опт [В) — йемен ); Рис. 9.16, Итеративный алгоритм лля вычисления активных переменных 9.2.6 Доступные выражения Выражение л + у доступно (ака1!аЫе) в точке р, если любой путь от входного узла к р вычисляет х + у и после последнего такого вычисления до достижения р иет последующих присваиваний переменным х и уз.

Когда речь идет о доступных выражениях, мы говорим, что блок уничтожает выражение ж+ у, если он присваивает !или может присваивать) х и у и после этого не вычисляет х + у заново. Блок генерируепз выражение х + у, если он вычисляет х + у и не выполняет последующих переопределений х и у. Заметим, что понятия "уничтожения" и "генерации" доступного выражения не те же, что в случае достигающих определений. Несмотря на это понятия "уничтожение" и "генерация" ведут себя, по сути, так же, как и уничтожение, и генерация для достигающих определений.

Основное применение информации о доступных выражениях — поиск глобальных общих подвыражений. Например, на рис. 9.17, а выражение 4 * з в блоке Вз будет общим подвыражением, если 4 * з доступно во входной точке блока Вз. Это выражение будет доступно, если з не будет присвоено новое значение в блоке Вз или если 4 * ! будет заново вычислено после такого присвоения в блоке Вз, как показано на рис. 9.17, б. Можно вычислить множество генерируемых выражений для каждой точки блока, проходя от начала до конца блока. В точке, предшествующей блоку, сгенерированных выражений нет. Если в точке р доступно множество выражений Я, а д представляет собой точку после р с инструкцией х = у+а между ними, то мы образуем множество доступных в д выражений следующим образом.

'Как обычно в этой главе, оператор ь означает обобпзепный оператор, пе обязательно оператор сложения. 736 Глава 9. Машинно-независимые оптимизации В, В, б) а) Рис. 9.17. Потенциальные общие подвыражения, пересекающие границы блоков 1. Добавляем к 5 выражение у + ж 2. Удаляем из Ь' все выражения, включающие переменную х. Заметим, что описанные действия должны выполняться в указанном порядке, так как к может совпадать с у или ж После того как мы достигнем конца блока, Я будет представлять собой множество сгенерированных выражений блока.

Множество уничтоженных выражений представляет собой множество всех выражений, скажем, у+ г, таких, что у или гопределяется в блоке, и при этом у+ г блоком не генерируется. Пример 9.15. Рассмотрим четыре инструкции, показанные на рис. 9.18. После первой инструкции доступно выражение 6+ с, после второй становится доступным выражение а — д, но 6+ с более недоступно, поскольку при этом переопределяется 6. Третья инструкция не делает 6+ с доступным, поскольку в ней переопределяется с.

После последней инструкции в связи с тем, что она изменяет д, становится недоступным и и — г1. Итак, здесь не генерируется ни одно доступное выражение и при этом уничтожаются все выражения, включающие а, 6, с или г1.а Мы можем найти доступные выражения методом, напоминающим метод вычисления достигающих определений. Предположим, что 11 — "универсальное" множество всех выражений, появляющихся в правой части одной или нескольких инструкций программы. Пусть для каждого блока В множество 1)ч [В~ содержит выражения из 11, доступные в точке непосредственно перед началом блока В, а 0))т )В] — такое же множество для точки, следующей за концом блока В. Определим е яелн как множество выражений, генерируемых В, а е Ййн — как множество выражений из 17, уничтожаемых в В. Заметим, что множества лч, 01)т, еяел и е lаЫ могут быть представлены в виде битовых векторов.

Неизвестные множе- 737 9.2. Введение в анализ потоков данных ИнстРУкциЯ ДОстУпныр ныРАжпниЯ а =Ь + с (6+ с! !а — г1,! !а — с!! Ь=а с=Ь Рис. 9.! 8. Вычисление доступных выражений ства !н и оцт связаны друг с другом и с известными е дел и е !р!!! следующими соотношениями: ОНТ !ВХОД1 — — З и для всех базовых блоков !3, отличных от входного, опт !!!~ == е яепн ! ! ПН~В1 — е й!!!и) пч )В! =- Опт !Р] .=-й, Р— ярелжсмвеяник П Приведенные выше уравнения выглядят почти идентичными уравнениям для достигающих определений.

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

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

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