Hoppa till innehållet

Static single assignment form

Från Wikipedia

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.

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