Folien VL-06 zusammengefasst
This commit is contained in:
parent
538673d02e
commit
1d4d54f1f2
BIN
verfahren.pdf
BIN
verfahren.pdf
Binary file not shown.
@ -325,8 +325,34 @@
|
||||
\item Kopienfortschreibung: Aus $v_i = y_j$ kann jede Verwendung von $v_i$ durch $y_j$ ersetzt werden
|
||||
\item Lebendigkeit einer Variable lässt sich direkt aus weiterem lesenden Zugriff erkennen
|
||||
\item Gemeinsame Teilausdrücke, verfügbare Ausdrücke und vorhersehbare Ausdrücke lassen sich durch Wertnummerierung in gesamter Prozedur leicht erkennen
|
||||
\item Elimination toten Codes:\begin{itemize}
|
||||
\item alles, was nicht als lebendig markiert ist, ist tot
|
||||
\item Markierung von Anweisungen als lebendig, falls sie \begin{itemize}
|
||||
\item Seiteneffekte wie I/O, Funktionsaufrufe oder die Rückgabe von Werten hat
|
||||
\item eine später von einer lebendigen Anweisung benutzte Variable schreibt
|
||||
\item eine Verzweigung ist, von der eine lebendige Anweisung kontrollflussabhängig ist
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Rücktransformation aus SSA-Form}
|
||||
\begin{itemize}
|
||||
\item $\phi$-Funktion nicht in Hardware abbildbar, Umwandlung notwendig
|
||||
\item Aus $v_3 = \phi(v_1, v_2)$ wird \begin{itemize}
|
||||
\item $v_3 = v_i$ in Vorgängerblock $i$ falls sich Lebensspannen der $v_i$ nicht paarweise überlappen (konventionelle SSA-Form)
|
||||
\item $v_3 = t$ ($t$ frische Temporärvariable) in Block mit $\phi$-Funktion sowie $t = v_i$ in Vorgängerblock $i$
|
||||
\end{itemize}
|
||||
\item Sequentialisierung paralleler Kopieroperationen (TODO VL-06)
|
||||
\item Variablen können auch nur schwach definiert sein, etwa durch Zeiger auf Variablen oder Seiteneffekte von Prozeduren auf globale Variablen $\rightarrow$ Hilfsfunktion $\mathrm{isAlias}(p, v)$\begin{itemize}
|
||||
\item \begin{equation*}
|
||||
\mathrm{isAlias}(p, v) = \begin{cases}
|
||||
*p & \text{falls}\, p = \&v\\
|
||||
v & \text{sonst}
|
||||
\end{cases}
|
||||
\end{equation*}
|
||||
\item Für jede Zuweisung $*p = $ für jede Variable $v_i$, auf die $p$ zeigen könnte, neue Zuweisung $v_{i+1} = \mathrm{isAlias}(p, v_i)$ einfügen
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\section{Aliasanalyse}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user