Jeremy Siek пре 9 година
родитељ
комит
6ba4e2fa34
1 измењених фајлова са 26 додато и 1 уклоњено
  1. 26 1
      book.tex

+ 26 - 1
book.tex

@@ -2718,9 +2718,22 @@ Regarding \key{if} statements, we recommend that you not lower them in
 liveness analysis, \key{if} statments are easier to deal with than
 jump instructions.
 
+\begin{exercise}\normalfont
+Expand your \code{select-instructions} pass to handle the new features
+of the $R_2$ language. Test the pass on all the examples you have
+created and make sure that you have some test programs that use the
+\code{eq?} operator, creating some if necessary. Test the output of
+\code{select-instructions} using the \code{interp-x86} interpreter
+(Appendix~\ref{appendix:interp}).
+\end{exercise}
+
 \section{Register Allocation}
 \label{sec:register-allocation-r2}
 
+The changes required for $R_2$ affect the liveness analysis, building
+the interference graph, and assigning homes, but the graph coloring
+algorithm itself should not need to change.
+
 \subsection{Liveness Analysis}
 \label{sec:liveness-analysis-r2}
 
@@ -2782,6 +2795,13 @@ to be updated to handle the \key{if} statement, simply by recursively
 processing the child nodes.  Hopefully your code already handles the
 other new instructions, but if not, you can generalize your code.
 
+\begin{exercise}\normalfont
+Implement the additions to the \code{register-allocation} pass so that
+it works for $R_2$ and test your compiler using your previously
+created programs on the \code{interp-x86} interpreter
+(Appendix~\ref{appendix:interp}).
+\end{exercise}
+
 \section{Patch Instructions}
 \label{sec:patch-instructions-r2}
 
@@ -2820,6 +2840,11 @@ $\Rightarrow$
 \end{minipage}
 \end{tabular} 
 
+\begin{exercise}\normalfont
+Update your \code{patch-instruction} pass to handle $R_2$ and test
+your compiler using your previously created programs on the
+\code{interp-x86} interpreter (Appendix~\ref{appendix:interp}).
+\end{exercise}
 
 
 \section{An Example Translation}
@@ -2962,7 +2987,7 @@ We provide several interpreters in the \key{interp.rkt} file.  The
 languages considered in this book ($R_1, R_2, \ldots$) and interprets
 the program, returning the result value.  The \key{interp-C} function
 interprets an AST for a program in one of the C-like languages ($C_0,
-C_1, \ldots$), and the \key{interp-x86} function interprets an AST for
+C_1, \ldots$), and the \code{interp-x86} function interprets an AST for
 an x86-64 program.
 
 \section{Utility Functions}