|
@@ -26,7 +26,7 @@
|
|
|
|
|
|
\def\racketEd{0}
|
|
|
\def\pythonEd{1}
|
|
|
-\def\edition{1}
|
|
|
+\def\edition{0}
|
|
|
|
|
|
% material that is specific to the Racket edition of the book
|
|
|
\newcommand{\racket}[1]{{\if\edition\racketEd{#1}\fi}}
|
|
@@ -2488,8 +2488,7 @@ each of which is an integer constant (called an \emph{immediate
|
|
|
\MID \key{r11} \MID \key{r12} \MID \key{r13}
|
|
|
\MID \key{r14} \MID \key{r15}}
|
|
|
|
|
|
-\newcommand{\GrammarXInt}{
|
|
|
-\if\edition\racketEd
|
|
|
+\newcommand{\GrammarXIntRacket}{
|
|
|
\begin{array}{rcl}
|
|
|
\Reg &::=& \allregisters{} \\
|
|
|
\Arg &::=& \key{\$}\Int \MID \key{\%}\Reg \MID \Int\key{(}\key{\%}\Reg\key{)}\\
|
|
@@ -2502,8 +2501,9 @@ each of which is an integer constant (called an \emph{immediate
|
|
|
\key{jmp}\,\itm{label} \MID \\
|
|
|
&& \itm{label}\key{:}\; \Instr
|
|
|
\end{array}
|
|
|
-\fi
|
|
|
-\if\edition\pythonEd\pythonColor
|
|
|
+}
|
|
|
+
|
|
|
+\newcommand{\GrammarXIntPython}{
|
|
|
% no jmp and label in the python version
|
|
|
\begin{array}{rcl}
|
|
|
\Reg &::=& \allregisters{} \\
|
|
@@ -2514,7 +2514,6 @@ each of which is an integer constant (called an \emph{immediate
|
|
|
&& \key{pushq}\;\Arg \MID \key{popq}\;\Arg \MID
|
|
|
\key{callq} \; \mathit{label} \MID \key{retq}
|
|
|
\end{array}
|
|
|
-\fi
|
|
|
}
|
|
|
|
|
|
\begin{figure}[tp]
|
|
@@ -2522,7 +2521,7 @@ each of which is an integer constant (called an \emph{immediate
|
|
|
{\if\edition\racketEd
|
|
|
\[
|
|
|
\begin{array}{l}
|
|
|
- \GrammarXInt \\
|
|
|
+ \GrammarXIntRacket \\
|
|
|
\begin{array}{lcl}
|
|
|
\LangXIntM{} &::= & \key{.globl main}\\
|
|
|
& & \key{main:} \; \Instr\ldots
|
|
@@ -8667,8 +8666,7 @@ $\Atm$ to x86:
|
|
|
\end{array}
|
|
|
\]
|
|
|
|
|
|
-\newcommand{\GrammarXIf}{
|
|
|
-\if\edition\racketEd
|
|
|
+\newcommand{\GrammarXIfRacket}{
|
|
|
\begin{array}{lcl}
|
|
|
\itm{bytereg} &::=& \key{ah} \MID \key{al} \MID \key{bh} \MID \key{bl}
|
|
|
\MID \key{ch} \MID \key{cl} \MID \key{dh} \MID \key{dl} \\
|
|
@@ -8680,8 +8678,9 @@ $\Atm$ to x86:
|
|
|
\MID \key{movzbq}~\Arg\key{,}~\Arg \\
|
|
|
&\MID& \key{j}cc~\itm{label} \\
|
|
|
\end{array}
|
|
|
-\fi
|
|
|
-\if\edition\pythonEd\pythonColor
|
|
|
+}
|
|
|
+
|
|
|
+\newcommand{\GrammarXIfPython}{
|
|
|
\begin{array}{lcl}
|
|
|
\itm{bytereg} &::=& \key{ah} \MID \key{al} \MID \key{bh} \MID \key{bl}
|
|
|
\MID \key{ch} \MID \key{cl} \MID \key{dh} \MID \key{dl} \\
|
|
@@ -8694,22 +8693,35 @@ $\Atm$ to x86:
|
|
|
&\MID& \key{jmp}\,\itm{label} \MID \key{j}cc~\itm{label}
|
|
|
\MID \itm{label}\key{:}\; \Instr
|
|
|
\end{array}
|
|
|
-\fi
|
|
|
}
|
|
|
|
|
|
|
|
|
\begin{figure}[tp]
|
|
|
-\begin{tcolorbox}[colback=white]
|
|
|
+ \begin{tcolorbox}[colback=white]
|
|
|
+{\if\edition\racketEd
|
|
|
\[
|
|
|
\begin{array}{l}
|
|
|
- \gray{\GrammarXInt} \\ \hline
|
|
|
- \GrammarXIf \\
|
|
|
+ \gray{\GrammarXIntRacket} \\ \hline
|
|
|
+ \GrammarXIfRacket \\
|
|
|
\begin{array}{lcl}
|
|
|
\LangXIfM{} &::= & \key{.globl main} \\
|
|
|
& & \key{main:} \; \Instr\ldots
|
|
|
\end{array}
|
|
|
\end{array}
|
|
|
\]
|
|
|
+}
|
|
|
+{\if\edition\pythonEd
|
|
|
+\[
|
|
|
+\begin{array}{l}
|
|
|
+ \gray{\GrammarXIntPython} \\ \hline
|
|
|
+ \GrammarXIfPython \\
|
|
|
+\begin{array}{lcl}
|
|
|
+\LangXIfM{} &::= & \key{.globl main} \\
|
|
|
+ & & \key{main:} \; \Instr\ldots
|
|
|
+\end{array}
|
|
|
+\end{array}
|
|
|
+\]
|
|
|
+\fi}
|
|
|
\end{tcolorbox}
|
|
|
\caption{The concrete syntax of \LangXIf{} (extends \LangXInt{} of figure~\ref{fig:x86-int-concrete}).}
|
|
|
\label{fig:x86-1-concrete}
|
|
@@ -13518,10 +13530,11 @@ movzbq %al, |$\Var$|
|
|
|
|
|
|
\begin{figure}[tp]
|
|
|
\begin{tcolorbox}[colback=white]
|
|
|
+{\if\edition\racketEd
|
|
|
\[
|
|
|
\begin{array}{l}
|
|
|
- \gray{\GrammarXInt} \\ \hline
|
|
|
- \gray{\GrammarXIf} \\ \hline
|
|
|
+ \gray{\GrammarXIntRacket} \\ \hline
|
|
|
+ \gray{\GrammarXIfRacket} \\ \hline
|
|
|
\GrammarXGlobal \\
|
|
|
\begin{array}{lcl}
|
|
|
\LangXGlobalM{} &::= & \key{.globl main} \\
|
|
@@ -13529,6 +13542,20 @@ movzbq %al, |$\Var$|
|
|
|
\end{array}
|
|
|
\end{array}
|
|
|
\]
|
|
|
+\fi}
|
|
|
+{\if\edition\pythonEd\pythonColor
|
|
|
+\[
|
|
|
+\begin{array}{l}
|
|
|
+ \gray{\GrammarXIntPython} \\ \hline
|
|
|
+ \gray{\GrammarXIfPython} \\ \hline
|
|
|
+ \GrammarXGlobal \\
|
|
|
+\begin{array}{lcl}
|
|
|
+\LangXGlobalM{} &::= & \key{.globl main} \\
|
|
|
+ & & \key{main:} \; \Instr^{*}
|
|
|
+\end{array}
|
|
|
+\end{array}
|
|
|
+\]
|
|
|
+\fi}
|
|
|
\end{tcolorbox}
|
|
|
\caption{The concrete syntax of \LangXGlobal{} (extends \LangXIf{} shown in figure~\ref{fig:x86-1-concrete}).}
|
|
|
\label{fig:x86-2-concrete}
|
|
@@ -16090,10 +16117,11 @@ this section. \index{subject}{x86}
|
|
|
\begin{figure}[tp]
|
|
|
\begin{tcolorbox}[colback=white]
|
|
|
\small
|
|
|
+{\if\edition\racketEd
|
|
|
\[
|
|
|
\begin{array}{l}
|
|
|
- \gray{\GrammarXInt} \\ \hline
|
|
|
- \gray{\GrammarXIf} \\ \hline
|
|
|
+ \gray{\GrammarXIntRacket} \\ \hline
|
|
|
+ \gray{\GrammarXIfRacket} \\ \hline
|
|
|
\gray{\GrammarXGlobal} \\ \hline
|
|
|
\GrammarXIndCall \\
|
|
|
\begin{array}{lcl}
|
|
@@ -16101,6 +16129,20 @@ this section. \index{subject}{x86}
|
|
|
\end{array}
|
|
|
\end{array}
|
|
|
\]
|
|
|
+\fi}
|
|
|
+{\if\edition\pythonEd
|
|
|
+\[
|
|
|
+\begin{array}{l}
|
|
|
+ \gray{\GrammarXIntPython} \\ \hline
|
|
|
+ \gray{\GrammarXIfPython} \\ \hline
|
|
|
+ \gray{\GrammarXGlobal} \\ \hline
|
|
|
+ \GrammarXIndCall \\
|
|
|
+\begin{array}{lcl}
|
|
|
+\LangXIndCallM{} &::= & \Def^{*}
|
|
|
+\end{array}
|
|
|
+\end{array}
|
|
|
+\]
|
|
|
+\fi}
|
|
|
\end{tcolorbox}
|
|
|
|
|
|
\caption{The concrete syntax of \LangXIndCall{} (extends \LangXGlobal{} of figure~\ref{fig:x86-2-concrete}).}
|