|
@@ -14717,7 +14717,7 @@ start:
|
|
|
$\Rightarrow$
|
|
|
\begin{minipage}{0.3\textwidth}
|
|
|
\begin{lstlisting}
|
|
|
-start:
|
|
|
+|$f$|start:
|
|
|
movq %rdi, |$x_1$|
|
|
|
movq %rsi, |$x_2$|
|
|
|
|$\cdots$|
|
|
@@ -14727,6 +14727,15 @@ start:
|
|
|
\end{lstlisting}
|
|
|
\end{minipage}
|
|
|
\end{center}
|
|
|
+Recall that we use the label \code{start} for the initial block of a
|
|
|
+program, and in Section~\ref{sec:select-Lvar} we recommend labeling
|
|
|
+the conclusion of the program with \code{conclusion}, so that
|
|
|
+$\RETURN{Arg}$ can be compiled to an assignment to \code{rax} followed
|
|
|
+by a jump to \code{conclusion}. With the addition of function
|
|
|
+definitions, there is a start block and conclusion for each function,
|
|
|
+but their labels need to be unique. We recommend prepending the
|
|
|
+function's name to \code{start} and \code{conclusion}, respectively,
|
|
|
+to obtain unique labels.
|
|
|
|
|
|
\racket{The interpreter for \LangXIndCall{} needs to know how many
|
|
|
parameters the function expects, but the parameters are no longer in
|
|
@@ -14783,17 +14792,6 @@ means ``pop the frame and then do an indirect jump'', which we name
|
|
|
argument that specifies where to jump and an integer that represents
|
|
|
the arity of the function being called.
|
|
|
|
|
|
-Recall that we use the label \code{start} for the initial block of a
|
|
|
-program, and in Section~\ref{sec:select-Lvar} we recommend labeling
|
|
|
-the conclusion of the program with \code{conclusion}, so that
|
|
|
-$\RETURN{Arg}$ can be compiled to an assignment to \code{rax} followed
|
|
|
-by a jump to \code{conclusion}. With the addition of function
|
|
|
-definitions, there is a start block and conclusion for each function,
|
|
|
-but their labels need to be unique. We recommend prepending the
|
|
|
-function's name to \code{start} and \code{conclusion}, respectively,
|
|
|
-to obtain unique labels.
|
|
|
-
|
|
|
-
|
|
|
\section{Register Allocation}
|
|
|
\label{sec:register-allocation-r4}
|
|
|
|