Static single assignment form
![]() | Den här artikeln behöver källhänvisningar för att kunna verifieras. (2016-02) Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan. |
Static single assignment form (ofta förkortat SSA form eller SSA) är inom datavetenskapen en representation av datorinstruktioner (intermediate code) där varje variabel tilldelas exakt en gång. Existerande variabler i den ursprungliga koden delas upp i versioner (i regel med ett index), så att varje tilldelning till en variabel får ett eget namn.
Nedan följer ett enkelt program (före övergång till SSA)
y := 4; y := 2; x := y; print(x)
Efter övergång till SSA ser det ut så här
y1 := 4; y2 := 2; x1 := y2; print(x1)
En stor fördel med SSA är att det är mycket lättare att skriva optimeringsalgoritmer, då man bara behöver hålla reda på var en variabel initieras och var den används. I exemplet ovan har variabeln y1 inga instruktioner i sin användningslista, vilket betyder att den kan tas bort helt ur programmet.
Det är också lätt att visa att en variabel är konstant ifall det värde som variabeln initierades med i sin tur är konstant.
SSA utvecklades av Ron Cytron, Jeanne Ferrante, Barry Rosen, Mark Wegman och Ken Zadeck (samtliga forskare på IBM) under 1980-talet.
Referenser
- Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia, Static single assignment form, 21 december 2010.