|
@@ -5960,27 +5960,19 @@ blocks on several test programs.
|
|
|
\index{tuple}
|
|
|
\index{vector}
|
|
|
|
|
|
-\margincomment{\scriptsize To do: challenge assignments: mark-and-sweep,
|
|
|
- add simple structures. \\ --Jeremy}
|
|
|
-\margincomment{\scriptsize To do: look through Andre's code comments for extra
|
|
|
- things to discuss in this chapter. \\ --Jeremy}
|
|
|
\margincomment{\scriptsize To do: Flesh out this chapter, e.g., make sure
|
|
|
all the IR grammars are spelled out! \\ --Jeremy}
|
|
|
-\margincomment{\scriptsize Introduce has-type, but after flatten, remove it,
|
|
|
- but keep type annotations on vector creation and local variables, function
|
|
|
- parameters, etc. \\ --Jeremy}
|
|
|
\margincomment{\scriptsize Be more explicit about how to deal with
|
|
|
the root stack. \\ --Jeremy}
|
|
|
|
|
|
-In this chapter we study the implementation of mutable tuples (called
|
|
|
-``vectors'' in Racket). This language feature is the first to use the
|
|
|
-computer's \emph{heap}\index{heap} because the lifetime of a Racket tuple is
|
|
|
-indefinite, that is, a tuple lives forever from the programmer's
|
|
|
-viewpoint. Of course, from an implementer's viewpoint, it is important
|
|
|
-to reclaim the space associated with a tuple when it is no longer
|
|
|
-needed, which is why we also study \emph{garbage collection}
|
|
|
-\emph{garbage collection}
|
|
|
-techniques in this chapter.
|
|
|
+In this chapter we study the implementation of mutable tuples, called
|
|
|
+vectors in Racket. This language feature is the first to use the
|
|
|
+computer's \emph{heap}\index{heap} because the lifetime of a Racket
|
|
|
+tuple is indefinite, that is, a tuple lives forever from the
|
|
|
+programmer's viewpoint. Of course, from an implementer's viewpoint, it
|
|
|
+is important to reclaim the space associated with a tuple when it is
|
|
|
+no longer needed, which is why we also study \emph{garbage collection}
|
|
|
+\emph{garbage collection} techniques in this chapter.
|
|
|
|
|
|
Section~\ref{sec:r3} introduces the \LangVec{} language including its
|
|
|
interpreter and type checker. The \LangVec{} language extends the \LangIf{}
|
|
@@ -13150,6 +13142,7 @@ registers.
|
|
|
\texttt{addq} $A$, $B$ & $A + B \to B$\\
|
|
|
\texttt{negq} $A$ & $- A \to A$ \\
|
|
|
\texttt{subq} $A$, $B$ & $B - A \to B$\\
|
|
|
+\texttt{imulq} $A$, $B$ & $A \times B \to B$\\
|
|
|
\texttt{callq} $L$ & Pushes the return address and jumps to label $L$ \\
|
|
|
\texttt{callq} \texttt{*}$A$ & Calls the function at the address $A$. \\
|
|
|
%\texttt{leave} & $\texttt{ebp} \to \texttt{esp};$ \texttt{popl \%ebp} \\
|