Hoppa till innehållet

Static single assignment form

Från Wikipedia
Version från den 16 april 2024 kl. 13.03 av Essin (Diskussion | Bidrag) (Essin flyttade sidan SSA (static single assignment form) till Static single assignment form: Bättre sidnamn: överflödigt med både förkortning och utskriven form i artikeltiteln)
(skillnad) ← Äldre version | visa nuvarande version (skillnad) | Nyare version → (skillnad)

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.