Folien VL-02 zusammengefasst

This commit is contained in:
Marco Ammon 2020-08-10 21:11:38 +02:00
parent b0cc460874
commit 824137f425
2 changed files with 44 additions and 2 deletions

Binary file not shown.

View File

@ -47,12 +47,54 @@
\clearpage \clearpage
\section{Kontrollflussanalyse} \section{Kontrollflussanalyse}
\subsection{Kontrollflussgraph} \subsection{Kontrollflussgraph}
\begin{itemize}
\item Gerichteter Graph
\item Knoten: Grundblöcke (meist maximal)
\item Kante zwischen zwei Blöcken $A$ und $B$ wenn $B$ direkt nach $A$ ausgeführt werden kann (etwa [un-]bedingter Sprung oder Fallthrough)
\item Synthetische Ergänzung um Entry- und Exit-Knoten, die mit Kante verbunden sind
\end{itemize}
\subsection{Dominanz} \subsection{Dominanz}
\subsection{Rückwärtskante} \begin{itemize}
\subsection{Natürliche Schleifen} \item Knoten $x$ dominiert $y$ ($x \geq \geq y$), wenn jeder Pfad von Wurzel zu $y$ durch $x$ laufen muss
\item Strikte Dominanz $x >> y$, falls zusätzlich $x \neq y$ gilt
\item $\mathrm{ImmDom[}y\mathrm{]}$ ist strikter Dominator von $y$, der $y$ am Nächsten ist
\item Bestimmung des ImmDomms: TODO
\item Dominatorbaum enthält jeden Knoten als Kind seines ImmDomms $\rightarrow$ Pfad zwischen $x$ und $z$ in Dominatorbaum $\Leftrightarrow$ $x >> z$
\end{itemize}
\subsection{Schleifenerkennung}
\begin{itemize}
\item Region: \begin{itemize}
\item Untergraph mit einem \enquote{Header} $d$, der (potentiell mehrere) Eingangskante von außerhalb besitzt
\item Wichtige Region: maximale Region mit $d$ dominiert alle Knoten der Region
\item Hierarchischer Flussbaum: Baum der Regionen
\end{itemize}
\item Rückwärtskante: Kante $(n,d)$ mit $d \geq \geq n$
\item Natürliche Schleife: \begin{itemize}
\item Rückwärtskante $(n, d)$ sowie alle Knoten $k$ mit $d \ge \ge k$ und es gibt einen Pfad von $k$ nach $n$ ohne $d$
\item Bestimmung mit Worklist-Algorithmus, der bei $n$ beginnt und rekursiv die Vorgänger bis $d$ durchläuft und in Menge aufnimmt
\end{itemize}
\item Suche nach Rückwärtskanten und natürlichen Schleifen in wichtigen Regionen ausreichend
\item \enquote{Unsaubere} Regionen: \begin{itemize}
\item ein Knoten dominiert nachgeordneten Zyklus
\item Erkennung durch Prüfung der Reduzierbarkeit des Graphs: \begin{itemize}
\item Entfernung der Rückwärtskanten aus KFG $\rightarrow$ azyklischer Graph, in dem jeder Knoten von der Wurzel erreicht werden kann $\Leftrightarrow$ KFG frei von unnatürlichen Schleifen
\item Alternative mit Transformationen: Am Ende Graph aus einem einzigen Knoten $\Leftrightarrow$ KFG reduzierbar (ohne Zyklen) \begin{description}
\item[T1-Transformation] Selbstschleifen aus Graph löschen
\item[T2-Transformation] Knoten mit eindeutigem Vorgänger mit diesem zusammenfassen
\end{description}
\end{itemize}
\end{itemize}
\end{itemize}
\subsection{Kontrollflussabhängigkeit} \subsection{Kontrollflussabhängigkeit}
\section{Datenflussanalyse} \section{Datenflussanalyse}
\subsection{Datenabhängigkeiten}
\begin{itemize}
\item Schreiben vor Lesen:
\item Schreiben vor Schreiben: Ausgabeabhängigkeit
\item Lesen vor Schreiben: Anti-Abhängigkeit
\end{itemize}
\section{Aliasanalyse} \section{Aliasanalyse}