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 redigera

Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia, Static single assignment form, 21 december 2010.