Folien VL-03 zusammengefasst
This commit is contained in:
parent
824137f425
commit
b280f71904
BIN
verfahren.pdf
BIN
verfahren.pdf
Binary file not shown.
@ -52,16 +52,63 @@
|
|||||||
\item Knoten: Grundblöcke (meist maximal)
|
\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 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
|
\item Synthetische Ergänzung um Entry- und Exit-Knoten, die mit Kante verbunden sind
|
||||||
|
\item Kontrollflussabhängigkeit: Bei Verzweigungsknoten $v$ mit direkten Nachfolgern $a$ und $b$: $y$ kontrollflussabhängig von $v$ $\Leftrightarrow$ mindestens ein Pad von $a$ zum Exit-Knoten ohne $y$ und jeder Pfad von $b$ zum Exit-Knoten über $y$
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\subsection{Dominanz}
|
\subsection{Dominanz}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Knoten $x$ dominiert $y$ ($x \geq \geq y$), wenn jeder Pfad von Wurzel zu $y$ durch $x$ laufen muss
|
\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 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 $\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$
|
\item Dominatorbaum enthält jeden Knoten als Kind seines ImmDomms $\rightarrow$ Pfad zwischen $x$ und $z$ in Dominatorbaum $\Leftrightarrow$ $x >> z$
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Berechnung der Dominatoren $D(n)$ eines Knoten $n$}
|
||||||
|
|
||||||
|
\paragraph{Iterativer Fixpunkt-Algorithmus (Lengauer)}
|
||||||
|
\begin{itemize}
|
||||||
|
\item mit $\mathcal{O}(\vert E\vert \vert N\vert ^2)$
|
||||||
|
\item Zunächst Überapproximation der Dominatorenmenge
|
||||||
|
\item Initialisierung aller $D(n) \in N$ mit $N$ außer Startknoten $S$ mit $D(S) = S$
|
||||||
|
\item Bis Fixpunkt erreicht ist: alle $D(n)$ zu $D'(n) = \lbrace n\rbrace \cup \bigcap_{(p, n) \in E} D(p)$
|
||||||
|
\item $n$ am besten in Tiefensuchereihenfolge durchlaufen
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\paragraph{Verfahren mit Spannendem Tiefenbaum $T$}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Besuch des KFG in Tiefensuchereihenfolge mit zugehöriger Nummerierung: \begin{itemize}
|
||||||
|
\item \enquote{Spannende} Kanten gehen zu frisch nummerierten Knoten
|
||||||
|
\item Rückschreitende Kanten gehen zu Vorgänger (kleinere DFS-Nummer) in $T$
|
||||||
|
\item Fortschreitende Kanten gehen zu Nachfolger (größere DFS-Nummer) in $T$
|
||||||
|
\item Kreuzkanten führen in früher besuchten Ast in $T$
|
||||||
|
\end{itemize}
|
||||||
|
\item Dominatoren $D(n)$ liegen auf jeden Fall \enquote{über} $n$ in $T$
|
||||||
|
\item Berechnung der Semidominatoren $\mathrm{SemDom}\lbrack w\rbrack$ in Reihenfolge fallender DFS-Nummern: \begin{itemize}
|
||||||
|
\item Direkte Vorgänger auf $T$ sind Kandidaten
|
||||||
|
\item $\min_{u\in \mathrm{Pred}(w)} \mathrm{SemDom}\lbrack u\rbrack$ ist Kandidat
|
||||||
|
\item Minimum der Kandidaten ist $\mathrm{SemDom}\lbrack w\rbrack$
|
||||||
|
\end{itemize}
|
||||||
|
\item Berechnung von $\mathrm{ImmDom}\lbrack w\rbrack$ durch Durchlaufen in Tiefenordnung von $\mathrm{SemDom}\lbrack w\rbrack$ nach $w$:\begin{itemize}
|
||||||
|
\item Jeweils alle Vorgänger $u$ untersuchen und $u$ mit kleinstem $\mathrm{SemDom}\lbrack u\rbrack$ finden
|
||||||
|
\item \begin{equation*}
|
||||||
|
\mathrm{ImmDom}\lbrack w\rbrack = \begin{cases}
|
||||||
|
\mathrm{SemDom}\lbrack u\rbrack & \mathrm{falls}\, \mathrm{SemDom}\lbrack w\rbrack = \mathrm{SemDom}\lbrack u \rbrack\\
|
||||||
|
\mathrm{ImmDom}\lbrack u\rbrack & \mathrm{sonst}
|
||||||
|
\end{cases}
|
||||||
|
\end{equation*}
|
||||||
|
\end{itemize}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Dominanzgrenze}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Dominanzgrenze $DG[x]$ enthält Knoten $y$, die einen von $x$ dominierten Vorgänger besitzen, aber nicht von $x$ streng dominiert werden
|
||||||
|
\item Berechnung der $DG[x]$: \begin{align*}
|
||||||
|
DG[x] &= DG_\text{local}[x] \cup \bigcup_{z \in N, \mathrm{ImmDom}[z] = x} DG_\text{up}[x, z] \\
|
||||||
|
DG_\text{local}[x] &= \lbrace y \in \mathrm{Succ}(x) \mid \mathrm{ImmDom}[y] \neq x\rbrace\\
|
||||||
|
DG_\text{up}[x, z] &= \lbrace y \in DG[z] \mid \mathrm{ImmDom}[y] \neq x\rbrace
|
||||||
|
\end{align*}
|
||||||
|
\item Invertierung der Dominanzgrenzen liefert Kontrollflussabhängigkeiten
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
\subsection{Schleifenerkennung}
|
\subsection{Schleifenerkennung}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Region: \begin{itemize}
|
\item Region: \begin{itemize}
|
||||||
@ -86,7 +133,6 @@
|
|||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\subsection{Kontrollflussabhängigkeit}
|
|
||||||
|
|
||||||
\section{Datenflussanalyse}
|
\section{Datenflussanalyse}
|
||||||
\subsection{Datenabhängigkeiten}
|
\subsection{Datenabhängigkeiten}
|
||||||
|
Loading…
Reference in New Issue
Block a user