Тестирование софта - статьи


         

Это случается только тогда, когда


Это случается только тогда, когда значение
является целым и 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 не используется ни в каком переходе;
Этот алгоритм использует граф потока управления в качестве абстрактного представления обрабатываемой программы.

Содержание  Назад  Вперед