Это случается только тогда, когда
Это случается только тогда, когда значение
является целым и L ≤ i0 ≤ U, где L и U соответственно нижняя и верхняя граница цикла.
Этот алгоритм использует следующие термины: SIV subscript, определяемый тремя коэффициентами a, c1 и c2; цикл, определяемый своей нижней границей L и верхней границей U. Алгоритм осуществляет поиск следующего шаблона:
Таким образом, модель состоит из следующих видов строительных блоков:
-
SIV subscript, содержащий три атрибута, которые соответствуют значениям a, c1 и c2;
-
Цикл, содержащий два атрибута, которые соответствуют значениям L и U, а также множество SIV subscript.
Для частного случая оптимизаций, работающих с таким абстрактным представлением, которое близко синтаксической структуре программы, можно использовать способ построения модели, основанный на идее редукции грамматик (см. []).
Пример: Control Flow Graph optimizer. Рассмотрим оптимизатор, который осуществляет трансформации для упрощения графа потока управления процедуры.
Термин линейный участок (basic block) обозначает последовательность инструкций, которая начинается с метки, может заканчиваться условным или безусловным переходом, и может содержать последовательность не-переходных инструкций. Линейный участок называется пустым, если в нем не содержится не-переходных инструкций.
Оптимизатор осуществляет следующие трансформации:
-
если некоторый переход J1 ведет на метку L1 некоторого пустого линейного участка, который завершается безусловным переходом J2 на метку L2, то J1 трансформируется в прямую ссылку на метку L2;
-
если обе ветви условного перехода J ведут на одну и ту же метку L, то J трансформируется в безусловный переход на метку L;
-
если метка L некоторого линейного участка B не используется ни в каком переходе, то B удалается.
Алгоритм этой оптимизации использует такие термины: линейный участок, условный переход, безусловный переход. Алгоритм осуществляет поиск следующих шаблонов:
-
переход J1 ведет на метку L1 некоторого пустого линейного участка, который завершается безусловным переходом J2 на метку L2;
-
обе ветви условного перехода J ведут на одну и ту же метку L;
-
метка L не используется ни в каком переходе;
Этот алгоритм использует граф потока управления в качестве абстрактного представления обрабатываемой программы.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий