Zum Inhalt springen

Phi-Funktion (Compilerbau)

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 17. September 2025 um 22:03 Uhr durch imported>Meinichselbst (Parameter fix).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Die Phi-Funktion (φ-Funktion) ist ein Konstrukt im Compilerbau.

Bei der internen Darstellung von Programmcode in der Static-Single-Assignment-Darstellung wird jede Variable nur einmal geschrieben. Da so in alternativen Zweigen verschiedene Variablen geschrieben werden, muss nach der Vereinigung des Kontrollflusses (z. B. nach einem if/then/else) das Problem gelöst werden, dass späterer Code nur auf eine Variable zugreifen kann.

Gelöst wird das Problem über die Phi-Funktion, die ihre Parameter abhängig vom tatsächlich genommenen Kontrollfluss als Ergebnis zurückgibt.

Sie ist keine deterministische Funktion, da ihr Ergebnis von nicht parametrisierten Nebeneffekten abhängt. Aus dem Ausdruck phi(a_1, a_2) allein lässt sich nicht folgern, ob das Ergebnis a_1 oder a_2 ist.

Beispiel

Der Code-Block <syntaxhighlight lang="C"> if (c)

  a = b + d;

else

  a = e + f;

x = 2 * a; </syntaxhighlight>

wird in der SSA-Form mit Hilfe der Phi-Funktion zu:

<syntaxhighlight lang="C"> if (c_1)

  a_1 = b_1 + d_1;

else

  a_2 = e_1 + f_1;

x_1 = 2 * phi(a_1, a_2); </syntaxhighlight>

Literatur