Россия |
Анализ потоков данных
Пример: живые переменные (1)
В качестве примера работы алгоритма для обратной задачи рассмотрим задачу о живых переменных для той же программы. Граф в тех же обозначениях и множество потоковых функций показаны на слайде.
Пример: живые переменные (2)
Последовательность работы алгоритма приведена на иллюстрации. Как и в предыдущем случае, последовательность обработки вершин обозначена жирными стрелками.
Заключение
В заключение опишем еще раз последовательность шагов, которую надо осуществить для решения задачи анализа потоков данных итеративным способом.
Прежде всего, необходимо формализовать множество фактов и решение задачи анализа потоков данных, придумав подходящую полурешетку.
Затем, необходимо описать преобразование множества потоковых фактов при прохождении через вершину графа с помощью монотонных, а еще лучше дистрибутивных функций.
Наконец, применить итеративный алгоритм (в прямой или обратной модификации) для получения неподвижной точки.
Литература к лекции
- А. Ахо, Р. Сети, Дж. Ульман "Компиляторы: принципы, технологии и инструменты", М.: "Вильямс", 2001. 768 с.
- Steven S. Muchnik "Advanced Compiler Design And Implementation", Morgan Kaufmann Publishers, July 1997. 880 pp.
- В.Н. Касьянов "Оптимизирующие преобразования программ", М., "Наука", 1988. 336 с.