записи в локально видимую память и т.д. Кроме того, модель анали-
затора заведомо допускает упрощения, так как анализатор не может
досконально смоделировать поведение программы. Это означает, что
ряд эффектов операторов не будет учтен, т.е. на моделирование неко-
торых эффектов операторов будет затрачено время, однако результат
этого моделирования не отразится в изменении состояния. Учет этих
упрощений и ограничений анализатора позволяет устранить непро-
изводительные затраты времени, поскольку при применении резюме
непроизводительные вычисления не выполняются повторно. Возмож-
но, что некоторые эффекты самого применения резюме не могут быть
учтены моделью анализатора и также будут отнесены к непроизводи-
тельным вычислениям. Тем не менее время, затрачиваемое на приме-
нение резюме, по-прежнему не будет превышать время, требуемое на
анализ вызова функции методом встраивания. Это объясняется тем,
что набор эффектов, получаемых в результате применения резюме,
включается строго или совпадает с набором эффектов, моделируемых
при анализе методом встраивания.
В настоящей работе рассмотрен следующий набор эффектов, вли-
яющих на состояние анализируемой программы в процессе ее выпол-
нения.
1. Принятие решений о выборе пути выполнения. Выбор пути вы-
полнения сопровождается наложением ограничений на символьные
значения, относительно которых принимается решение о выборе пути.
Если эти символьные значения содержат ссылки на внешние по отно-
шению к вызываемой функции регионы памяти, то накладываемые
ограничения должны быть отражены в резюме. Кроме того, как бы-
ло показано выше, каждое принятие решения влияет на присутствие и
порядок операторов в последовательности выполнения, а следователь-
но, и на набор эффектов, включаемых в резюме. Наконец, наложение
ограничений на входные данные функции в зависимости от выбора
пути выполнения позволяет сохранить контекстную чувствительность
при анализе, поскольку определенные пути выполнения могут быть
достижимы лишь при ограниченном наборе входных значений аргу-
ментов функции и значений, находящихся во внешней по отношении
к ней памяти.
2. Модификация регионов памяти с областью видимости, отличной
от локальной, т.е. находящихся в статической или глобальной области
видимости, принадлежащих куче, а также модификация аргументов,
переданных по неконстантному указателю или неконстантной ссылке,
и областей памяти, относящихся к ним (возможно, с использованием
арифметики указателей).
3. Инвалидация регионов памяти, т.е. пометка некоторых регио-
нов как изменивших значение на неизвестное. Обычно выполняется
80 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2015. № 5