Sethi-Ullman-Algorithmus
This commit is contained in:
parent
16f83b0f0f
commit
0b075d38d7
BIN
verfahren.pdf
BIN
verfahren.pdf
Binary file not shown.
@ -270,6 +270,27 @@
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Sethi-Ullman-Algorithmus}
|
||||
\begin{enumerate}
|
||||
\item Baue DAG-Repräsentation von Befehlen, Variablen und Zwischenergebnissen auf
|
||||
\item Wandle DAG durch Herausschneiden gemeinsamer Teilausdrücke in Wald um
|
||||
\item Bestimme Ershov-Zahl $r$ (Anzahl der für Auswertung benötigten Register) rekursiv für jeden Teilbaum (vertausche Operanden bei kommutativen Operationen so dass möglichst viele Variablen direkt aus Speicher gelesen werden können):\\
|
||||
\begin{align*}
|
||||
r(t_1\, \texttt{op}\, t_2) &= \begin{cases*}
|
||||
r(t_1) + 1 & falls $r(t_1) = r(t_2)$\\
|
||||
\max(r(t_1), r(t_2)) & sonst
|
||||
\end{cases*}\\
|
||||
r(v) &= \begin{cases*}
|
||||
1 & falls linker Operand\\
|
||||
0 & falls rechter Operand
|
||||
\end{cases*}
|
||||
\end{align*}
|
||||
\item Code-Erzeugung und Mitführung eines Stapels unbenutzter Register:\begin{enumerate}
|
||||
\item Rekursives Traversieren des Ausdrucksbaums
|
||||
\item Besuchen der Kinder nach absteigendem Registerbedarf
|
||||
\item Generierung des Befehls für aktuellen Ausdruck
|
||||
\end{enumerate}
|
||||
\item Auftrennung des Baumes, wenn Teilbäume mehr Register als verfügbar benötigen $\rightarrow$ Teilbaum vor Auswertung des übrigen Baums im Speicher auswerten
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Ohne Registerzuteilung}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user