|
@@ -203,7 +203,9 @@ $n_2$ are the first two integers in the input sequence, then
|
|
|
\text{where } & B_1 = \{ (n_1\cdot n_2\cdot s, n_1 + -n_2) \mid s \in \mathbb{Z}^{*} \}\\
|
|
|
\text{and } & B_2 = \{ (n_1\cdot n_2\cdot s, n_2 + -n_1) \mid s \in \mathbb{Z}^{*} \}
|
|
|
\end{align*}
|
|
|
-
|
|
|
+We include the \texttt{read} operation in $S_0$ to demonstrate that
|
|
|
+order of evaluation sometimes makes a difference and also to prevent
|
|
|
+the use of an interpreter to trivially implement the compiler for $S_0$.
|
|
|
|
|
|
The goal for this chapter is to implement a compiler that translates
|
|
|
any program $p \in S_0$ into a x86-64 assembly program $p'$ such that
|
|
@@ -215,9 +217,12 @@ p \in S_0 \ar[rr]^{\text{compile}} \ar[drr]_{\text{run in Scheme}\quad} && p
|
|
|
& & n \in \mathbb{Z}
|
|
|
}
|
|
|
\]
|
|
|
+
|
|
|
In the next section we introduce enough of the x86-64 assembly
|
|
|
language to compile $S_0$.
|
|
|
|
|
|
+
|
|
|
+
|
|
|
\section{x86-64 Assembly}
|
|
|
|
|
|
\[
|