Einfacher Code-Generator mit getreg
This commit is contained in:
parent
2748a80fed
commit
16f83b0f0f
BIN
verfahren.pdf
BIN
verfahren.pdf
Binary file not shown.
@ -238,6 +238,36 @@
|
|||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\subsubsection{Einfacher Code-Generator mit \texttt{getreg}}
|
\subsubsection{Einfacher Code-Generator mit \texttt{getreg}}
|
||||||
|
\begin{itemize}
|
||||||
|
\item arbeitet auf maximalen Grundblöcken
|
||||||
|
\item alle Variablen vor und nach maximalem Grundblock im Speicher
|
||||||
|
\item Durchlaufen aller Zwischencode-Befehle und Mitführen von Register- und Adressdeskriptoren
|
||||||
|
\item \begin{equation*}
|
||||||
|
\texttt{getreg (}x \leftarrow y\, \texttt{op}\, z \texttt{)}= \begin{cases*}
|
||||||
|
R & falls $y$ alleine in $R$ steht und $y$ nicht mehr benötigt wird\\
|
||||||
|
U & falls es unbenutztes Register $U$ gibt\\
|
||||||
|
R & \parbox[t]{.65\textwidth}{falls $x$ in einem Register stehen muss/soll, schreibe Inhalt von $R$ in Speicherplätze aller darin enthaltenen Variablen}\\
|
||||||
|
M_x & sonst
|
||||||
|
\end{cases*}
|
||||||
|
\end{equation*},\\
|
||||||
|
dazu zusätzlich Deskriptoren anpassen
|
||||||
|
\item Für jeden Befehl $x \leftarrow y\, \texttt{op}\, z$:\begin{enumerate}
|
||||||
|
\item $L_x = \texttt{getreg (}x \leftarrow y\, \texttt{op}\, z \texttt{)}$
|
||||||
|
\item Wähle $L_y$ aus Adressdeskriptor von $y$ (möglichst Register)
|
||||||
|
\item Falls $y$ noch nicht in $L_x$, generiere $L_x = L_y$
|
||||||
|
\item Wähle Platz $L_z$ aus Adressdeskriptor von $z$ (möglichst Register)
|
||||||
|
\item Generiere $L_x = L_x\, \texttt{op}\, L_z$
|
||||||
|
\item Deskriptoren aktualisieren:\begin{enumerate}
|
||||||
|
\item $L_x$ in Adressdeskriptor von $x$ eintragen
|
||||||
|
\item Falls $L_x$ Register, zugehörigen Registerdeskriptor aktualisieren
|
||||||
|
\end{enumerate}
|
||||||
|
\item Falls keine weitere Verwendung von $y$, $z$ im Grundblock und in Register,\begin{enumerate}
|
||||||
|
\item ggf. Werte in Speicher zurückschreiben
|
||||||
|
\item Register von $y$ bzw. $z$ freigeben
|
||||||
|
\item Deskriptoren aktualisieren
|
||||||
|
\end{enumerate}
|
||||||
|
\end{enumerate}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
\subsubsection{Sethi-Ullman-Algorithmus}
|
\subsubsection{Sethi-Ullman-Algorithmus}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user