Анализ потока управления. Линейные участки (basic blocks, базовые блоки) Линейный участок – это максимальная последовательность инструкций, такая что:

Презентация:



Advertisements
Похожие презентации
Анализ Потока Данных Итеративные алгоритмы и SSA.
Advertisements

Новиков Сергей Анализ потока управления и потока данных в программе.
Внутреннее представление компилятора Типы представлений и их особенности.
Анализ тестового покрытия компиляторов Выполнила: Байцерова Ю.С., 545 Гр. Научный руководитель: ст. преп. Вояковская Н. Н. Рецензент: ст. преп. Луцив Д.В.
Оптимизация управляющего графа программ, имеющих избыточные условные вычисления Выполнил: Степнов Денис, 816 гр. Научный руководитель: Бучнев А.Ю. Выпускная.
Алгоритмы сканирования и обхода Лекция 3. Алгоритм сканирования графа Input: Орграф (граф) G и вершина s. Output: Множество R вершин, достижимых из s,
Unit-тестирование и метрики покрытия кода тестами Сергей Андреев, JetBrains 29 февраля 2012.
Еквівалентні автомати. Реакция автомата Реакцией автомата называется последовательность выходных сигналов автомата, полученная под воздействием некоторой.
Основные типы алгоритмических структур. Линейный алгоритм (следование). Алгоритм, в котором команды выполняются последовательно одна за другой, называется.
Алгоритмическое и программное обеспечение построения области реализуемости термодинамических систем Григоревский И. Н. Специальность: ,
Алгоритмы на графах Волновой метод. Постановка задачи Постановка задачи. Пусть G – неориентированный связный граф, а и b – две его вершины. Требуется.
N – входной блок (64 бита) X – раундовый ключ (32 бита) H – таблица замен.
МГУ имени Ломоносова, механико-математический факультет, кафедра вычислительной математики Исследование проблемы переполнения буферов в программах Пучков.
Алгоритмы на графах Волновой метод. Постановка задачи Постановка задачи. Пусть G – неориентированный связный граф, а и b – две его вершины. Требуется.
ветвление цикл
Распределение регистров при планировании инструкций для архитектуры Эльбрус Дипломная работа Иванова Д. С. Научный руководитель Шлыков С. Л. Москва 2008.
1.Алгоритм – это 1. Правила выполнения определённых действий 2. Ориентированный граф, указывающий порядок выполнения некоторого набора команд 3. Описание.
Методология проектирования информационных систем МИФИ, Кафедра «Кибернетика»
Остовные деревья Лекция 4. Задача «Минимальное остовное дерево» Дано: Граф G, веса c: E(G) R. Найти остовное дерево в G наименьшего веса или определить,
Реализация индексного анализа для деревьев циклов любого вида сложности Выполнил : студент 818 гр. Юдин Павел Научный руководитель : к. т. н. Муханов Л.
Транксрипт:

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

Линейные участки (basic blocks, базовые блоки) Линейный участок – это максимальная последовательность инструкций, такая что: Поток управления может входить только в первую инструкцию Управление покидает линейный участок без ветвлений, за исключением, возможно, в последней команде. 1. t0 = ld [x_addr] 2. t1 = ld [y_addr] 3. p0 = cmpe t0, t1 4. brc p0, t2 = ld [i_addr] 6. t3 = shl t2, 2 7. p1 = cmpe t3, brc p1, t1 = sub t1, add t2,1 -> t2 11. bru t4 = shl t1, t5 = add arr_addr, st [t5], t4 15. ret

Разбиение кода на ЛУ Поиск первых инструкций («лидеров», входов) – Первая команда – Целевая команда перехода – Команда за условным или безусловным переходом Построение ЛУ, начиная с лидеров 1. t0 = ld [x_addr] 2. t1 = ld [y_addr] 3. p0 = cmpe t0, t1 4. brc p0, t2 = ld [i_addr] 6. t3 = shl t2, 2 7. p1 = cmpe t3, brc p1, t1 = sub t1, add t2,1 -> t2 11. bru t4 = shl t1, t5 = add arr_addr, st [t5], t4 15. ret

Граф управления Вершины – линейные участки Дуги существуют между блоками если: – Между ними существует условный или безусловный переход – Блоки следуют друг за другом в исходной последовательности, причем первый не заканчивается безусловным переходом 1. t0 = ld [x_addr] 2. t1 = ld [y_addr] 3. p0 = cmpe t0, t1 4. brc p0, t2 = ld [i_addr] 6. t3 = shl t2, 2 7. p1 = cmpe t3, brc p1, t1 = sub t1, add t2,1 -> t2 11. bru t4 = shl t1, t5 = add arr_addr, st [t5], t4 15. ret

Граф управления 1. t0 = ld [x_addr] 2. t1 = ld [y_addr] 3. p0 = cmpe t0, t1 4. brc p0, t2 = ld [i_addr] 6. t3 = shl t2, 2 7. p1 = cmpe t3, brc p1, t1 = sub t1, add t2,1 -> t2 11. bru t4 = shl t1, t5 = add arr_addr, st [t5], t4 15. ret 1. t0 = ld [x_addr] 2. t1 = ld [y_addr] 3. p0 = cmpe t0, t1 4. brc p0, t2 = ld [i_addr] 6. t3 = shl t2, 2 7. p1 = cmpe t3, brc p1, t1 = sub t1, add t2,1 -> t2 11. bru t4 = shl t1, t5 = add arr_addr, st [t5], t4 15. ret 4. brc 8. brc 11. brc

Поиск в глубину Start/Entry Node 8Node 2 Node 3 Node 6 Node 1 Back edge Node 4 Node 5 Cross edge tree edge Start/Entry Node 8Node 2 Node 3 Node 6 Node 1 Node 4 Node 5Node 7 DFS tree Node 7

Особенности нумерации Pre-order s, 1, 2, 3, 4, 5, 6, 7, 8 Post-order 6, 5, 7, 4, 3, 2, 8, 1, s Reverse post order s, 1, 8, 2, 3, 4, 7, 5, 6 Start/Entry Node 8Node 2 Node 3 Node 6 Node 1 Node 4 Node 5 Start/Entry Node 8Node 2 Node 3 Node 6 Node 1 Node 4 Node 5Node 7 DFS tree Node 7

Доминаторы и постдоминаторы Отношение доминирования Строгое доминирование Непосредственный доминатор Постдоминатор

Доминаторы (пример) Node 8Node 2 Node 3 Node 6 Node 1 Node 4 Node 5Node 7 Node 8Node 2Node 3 Node 5 Node 1 Node 4Node 6Node 7 Дерево доминаторов Node 0

Постдоминаторы (пример) Node 0 Node 8Node 2 Node 3 Node 6 Node 1 Node 4 Node 5Node 7 Node 6 Node 8Node 2 Node 3Node 5Node 4 Node 1 Node 7 Дерево постдоминаторов Node 0

Зависимость по управлению Вершина y зависит по управлению от вершины x если существует дуга из x в z, такая что y pdom z, но y !pdom x. Node 0 Node 8Node 2 Node 3 Node 6 Node 1 Node 4 Node 5Node Дерево постдоминаторов 0 Node 0 Node 8 Node 2 Node 3Node 6Node 1 Node 4 Node 5Node 7 Граф зависимостей по управлению

Граница доминирования Node 8Node 2 Node 3 Node 6 Node 1 Node 4 Node 5Node 7 Node 0 DF(x) множество вершин Y такое что x доминирует предшественника y но не доминирует строго y DF(1) = {4,7} Итеративная граница доминирования:

Циклы в графах потока управления Statt/Entty Node 3Node 2 Node 4 Stop Node 1 Loop head backedge Цикл – множество вершин каждая из которых достижима из любой другой вершины этого множества (сильно связаная компонента на графе управления) Особенные вершины: Голова цикла Входные вершины Выходные вершины Особенные дуги: Обратные дуги Входные дуги Выходные дуги

Loop 3 Outetmost Loop 1 Innetmost Loop 2 Дерево циклов Statt/Entty Node 3Node 2 Node 4 Stop Node 1 Loop nest: Node 5 Loop 1Loop 3 Loop 2 Loop 0 Loop ttee:

Несводимые циклы Start Node 3Node 5 Node 4 Stop Node 2 Node 1 head Start Node 3Node 5 Node 4 Stop Node 2 Node Побочный вход head

Пример для анализа