SSA (static single assignment form)

Från Wikipedia
Hoppa till: navigering, sök
Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia, Static single assignment form

Inom datavetenskapen är static single assignment form (ofta förkortat SSA form eller SSA) 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.