<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Phi-Funktion_%28Compilerbau%29</id>
	<title>Phi-Funktion (Compilerbau) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Phi-Funktion_%28Compilerbau%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Phi-Funktion_(Compilerbau)&amp;action=history"/>
	<updated>2026-06-20T16:19:44Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Phi-Funktion_(Compilerbau)&amp;diff=2714500&amp;oldid=prev</id>
		<title>imported&gt;Meinichselbst: Parameter fix</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Phi-Funktion_(Compilerbau)&amp;diff=2714500&amp;oldid=prev"/>
		<updated>2025-09-17T22:03:34Z</updated>

		<summary type="html">&lt;p&gt;Parameter fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Phi-Funktion&amp;#039;&amp;#039;&amp;#039; (φ-Funktion) ist ein Konstrukt im [[Compilerbau]].&lt;br /&gt;
&lt;br /&gt;
Bei der internen Darstellung von [[Programmcode]] in der [[Zwischencode#Static Single Assignment|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.&amp;amp;nbsp;B. nach einem if/then/else) das Problem gelöst werden, dass späterer Code nur auf eine Variable zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Gelöst wird das Problem über die Phi-Funktion, die ihre Parameter abhängig vom tatsächlich genommenen Kontrollfluss als Ergebnis zurückgibt.&lt;br /&gt;
&lt;br /&gt;
Sie ist keine deterministische Funktion, da ihr Ergebnis von nicht parametrisierten [[Wirkung (Informatik)|Nebeneffekten]] abhängt. Aus dem Ausdruck &amp;lt;code&amp;gt;phi(a_1, a_2) &amp;lt;/code&amp;gt; allein lässt sich nicht folgern, ob das Ergebnis &amp;lt;code&amp;gt;a_1&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;a_2&amp;lt;/code&amp;gt; ist.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Der Code-Block&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
if (c)&lt;br /&gt;
   a = b + d;&lt;br /&gt;
else&lt;br /&gt;
   a = e + f;&lt;br /&gt;
x = 2 * a;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird in der SSA-Form mit Hilfe der Phi-Funktion zu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
if (c_1)&lt;br /&gt;
   a_1 = b_1 + d_1;&lt;br /&gt;
else&lt;br /&gt;
   a_2 = e_1 + f_1;&lt;br /&gt;
x_1 = 2 * phi(a_1, a_2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{cite book |author=Appel, Andrew W.&lt;br /&gt;
|title=Modern Compiler Implementation in ML&lt;br /&gt;
|publisher=Cambridge University Press |year=1999 |isbn=0-521-58274-1 |language=en }}&lt;br /&gt;
* {{cite book |author=Cooper, Keith D.; and Torczon, Linda&lt;br /&gt;
|title=Engineering a Compiler&lt;br /&gt;
|publisher=Morgan Kaufmann |year=2003 |isbn=1-55860-698-X |language=en }}&lt;br /&gt;
* {{cite book |author=Muchnick, Steven S.&lt;br /&gt;
|title=Advanced Compiler Design and Implementation&lt;br /&gt;
|publisher=Morgan Kaufmann |year=1997 |isbn=1-55860-320-4 |language=en }}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Compilerbau]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Meinichselbst</name></author>
	</entry>
</feed>