Опубликован: 23.07.2006 | Доступ: свободный | Студентов: 2241 / 912 | Оценка: 4.28 / 4.17 | Длительность: 21:37:00
Специальности: Системный архитектор
Лекция 12:

Анализ потока управления

Аннотация: Задачи анализа потока управления. Граф потока управления. Доминирование. Глубинное остовное дерево. Основные виды фрагментов графа потока управления и их свойства.

Анализ потока управления

В задачу анализа потока управления (control flow analysis) входит определение свойств передачи управления между операторами программы. Проверка многих свойств этого вида необходима для решения задач оптимизации, преобразований программ и т.д.

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

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

Ниже будут рассмотрены основные понятия в области анализа потока управления, приведены определения некоторых фрагментов и алгоритмы их распознавания.

Граф потока управления


Основным способом представления потока управления программы является граф потока управления (см. "Оптимизация" ) - ориентированный граф с двумя выделенными вершинами start и stop , такими, что

  • в start не заходит ни одна дуга
  • из stop не выходит ни одна дуга
  • произвольная вершина принадлежит хотя бы одному пути из start в stop

Для произвольной дуги e обозначим через beg(e) ее начало, а через end(e) - ее конец.

Для произвольной вершины v обозначим через in(v) множество входящих в нее дуг, а через out(v) - множество исходящих дуг.

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