\begin{slide}{Plan (I)}

  \begin{itemize}\itemsep 0pt
  \item 
Modell: Rechner mit beliebig vielen Registern
    $(R_0, R_1, \ldots)$
\item
    Befehle:
    \begin{itemize}
    \item Literal laden (in Register)
    \item Register laden (kopieren)
    \item direkt springen (zu literaler Adresse)
    \item indirekt springen (zu Adresse in Register)
    \end{itemize}
\item 
  Unterprogramm-Argumente in Registern:
  \begin{itemize}
  \item für Abstraktionen: $(R_0, R_1,\ldots, R_k)$
    
    (genau diese, genau dieser Reihe nach)
  \item für primitive Operationen: beliebig
  \end{itemize}

\item
    Transformation: lokale Namen $\to$ Registernamen
  \end{itemize}

\end{slide}


\begin{slide}{Plan (II)}

  \begin{itemize}
  \item Modell: Rechner mit begrenzt vielen 
    realen Registern,

    z. B. $(R_0,\ldots, R_7)$
  \item
    falls diese nicht ausreichen: 
    \emph{register spilling}
    
    virtuelle Register in Hauptspeicher abbilden
  \item
    Hauptspeicher (viel) langsamer als Register:

    möglichst wenig HS-Operationen:

    geeignete Auswahl der Spill-Register nötig
  \end{itemize}


\end{slide}
