Wertnummerierungsverfahren aus Übung hinzugefügt

This commit is contained in:
Marco Ammon 2020-08-15 12:47:34 +02:00
parent 32597233c6
commit 90c056842b
2 changed files with 45 additions and 0 deletions

Binary file not shown.

View File

@ -316,6 +316,51 @@
\item Falls $t$ in unbesuchten Blöcken nicht geändert wurde, $\mathrm{wn}_Z(t) = \phi'(\mathrm{wn}_X(t),\mathrm{wn}_Y(t))$ löschen und alle Verwendungen von $\mathrm{wn}_Z(t)$ durch $\mathrm{wn}_X(t)$ ersetzen
\end{itemize}
\end{itemize}
\newpage
\subsubsection{Wertnummerierungsverfahren nach Click/Braun (aus Übung)}
\begin{algorithmic}
\Function{Visit}{Basisblock $b$}
\State Wertnummerierung mit ReadVar/WriteVar durchführen
\ForAll{KFG-Nachfolger $s$ von $b$}
\If{$b$ ist letzter Vorgänger (höchste Tiefensuchnummer) von $s$}
\State \Call{Seal}{$s$}
\EndIf
\If{$s$ noch nicht besucht}
\State \Call{Visit}{$s$}
\EndIf
\EndFor
\EndFunction
\Statex
\Function{Seal}{Basisblock $b$}
\ForAll{vorläufige $\phi$-Funktion für Variable $v$ in $b$}
\ForAll{KFG-Vorgänger $p$ von $b$}
\State \Call{ReadVar}{$v$, $p$} als Operand zu $\phi$-Funktion hinzufügen
\EndFor
\EndFor
\EndFunction
\Statex
\Function{WriteVar}{Variable $v$, Basisblock $b$}
\State \Return nächste frische Wertnummer für $v$
\EndFunction
\Statex
\Function{ReadVar}{Variable $v$, Basisblock $b$}
\If{$b$ enthält bereits Wertnummer für $v$}
\State \Return Wertnummer für $v$ in $b$
\EndIf
\If{$b$ ist noch nicht versiegelt}
\State vorläufige $\phi$-Funktion mit nächster Wertnummer für $v$ in $b$ einfügen
\State \Return Wertnummer der $\phi$-Funktion
\ElsIf{$b$ hat nur einen Vorgänger $p$}
\State \Return \Call{ReadVar}{$v$, $p$}
\Else
\State $phi$-Funktion mit nächster Wertnummer für $v$ in $b$ in einfügen
\ForAll{KFG-Vorgänger $p$ von $b$}
\State \Call{ReadVar}{$v$, $p$} als Operand zu $\phi$-Funktion hinzufügen
\EndFor
\State \Return Wertnummer der $\phi$-Funktion
\EndIf
\EndFunction
\end{algorithmic}
\subsection{Optimierungen auf SSA-Form}
\begin{itemize}