Code-Selektion mittels Dynamischer Programmierung
This commit is contained in:
parent
f7c027804a
commit
87d6acd740
BIN
verfahren.pdf
BIN
verfahren.pdf
Binary file not shown.
@ -292,6 +292,21 @@
|
||||
\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}
|
||||
|
||||
\subsubsection{Dynamische Programmierung}
|
||||
\begin{enumerate}
|
||||
\item Rekursives Berechnen eines Kostenfelds $C[i]$ für jeden Knoten des Baums und $0 \leq i \leq \vert R\vert$ ($R$ Register der Zielarchitektur):\begin{itemize}
|
||||
\item $C[i]$: Kosten der Auswertung des Teilbaums in ein Register, sofern $i$ Register zur Verfügung stehen:\begin{enumerate}
|
||||
\item Für alle möglichen Maschinenbefehle $x$ alle möglichen Auswertungsreihenfolgen $y$ der Registeroperanden als $C[x, y, i]$ berechnen: erster Operand hat $i$ Register, zweiter $i-1$ Register, etc. zur Verfügung
|
||||
\item $C[x, y, i] = $ Summe der Kindkosten bei Auswertungsreihenfolge $y$ $+$ Kosten des Befehls $x$
|
||||
\item $C[i] = \min C[x, y, i]$, dann mit $x$ und $y$ des Minimums annotieren
|
||||
\end{enumerate}
|
||||
\item $C[0]$: Kosten der Auswertung des Teilbaums, wenn alle Register zur Verfügung stehen, aber Ergbenis am Ende in Speicher geschrieben wird (ergo $C[j] + 1 $)
|
||||
\end{itemize}
|
||||
\item Rekursives Auftrennen des Baums, wenn Ergebnis in Speicher abgelegt wird (aus annotiertem Befehl ersichtlich)
|
||||
\item Ablegen der Teilbäume in Schlange (\enquote{untere Bäume zuerst})
|
||||
\item Code-Generierung durch Abarbeitung der Schlange und Code-Generierung der jeweiligen Teilbäume
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Ohne Registerzuteilung}
|
||||
|
||||
\subsubsection{Baumtransformationen}
|
||||
@ -310,8 +325,6 @@
|
||||
\item Parsen des Baumtexts mit Maschinengrammatik emittiert den Maschinencode (dabei Mehrdeutigkeit nach Heuristik auflösen)
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Dynamische Programmierung}
|
||||
|
||||
\section{Registerzuteilung}
|
||||
%\printbibliography
|
||||
\end{document}
|
||||
|
Loading…
Reference in New Issue
Block a user