SSA

18-10-2023

В конструировании компиляторов SSA-представление (англ. Static single assignment form) это промежуточное представление, в котором каждой переменной значение присваивается лишь единожды. Переменные исходной программы разбиваются на версии, обычно с помощью добавления суффикса, таким образом, что каждое присваивание осуществляется уникальной версии переменной. В SSA-представлении цепочки определение-использование (англ. def-use) заданы явно и содержат единственный элемент.

SSA-представление было разработано исследователями Ron Cytron, Jeanne Ferrante, Barry Rosen, Mark Wegman, и Ken Zadeck в IBM в 80-х годах.

В компиляторах функциональных языков программирования, таких как Scheme, ML и Haskell, там где обычно ожидается использование SSA-представления вместо него используется CPS-представление (англ. Continuation-passing style). Формально эти представления эквивалентны, поэтому оптимизации и трансформации, сформулированные в одном из представлений, могут быть применены и для другого.

Литература

  • Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульман. Компиляторы: принципы, технологии и инструментарий = Compilers: Principles, Techniques, and Tools. — 2-е изд. — М.: Вильямс, 2008. — ISBN 978-5-8459-1349-4
  • Робин Хантер. Основные концепции компиляторов = The Essence of Compilers. — М.: Вильямс, 2002. — С. 256. — ISBN 0-13-727835-7
  • R. Allen, K. Kennedy. Optimizing Compilers for Modern Architectures. Morgan Kaufmann Publishers, 2002.
  • A. Appel. Modern Compiler Implementation in C. Cambridge University Press, 1998.
  • S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers, 1997.

См. также

Ссылки

  • Steven Bosscher и Diego Novillo. GCC gets a new Optimizer Framework. Статья об использовании SSA-представления в GCC.
  • The SSA Bibliography. Каталог исследовательских статей по SSA-представлению.
  • F.K. Zadeck. «The Development of Static Single Assignment Form», Рассказ о корнях SSA-представления в Декабре 2007.

SSA.

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47