|
|
1.1 root 1: % look at TeXbook, p 246
2: \par
3: \centerline{%
4: \vbox{\offinterlineskip\hrule
5: \halign{\vrule#&\strut\quad\hfil#\hfil\quad&
6: \vrule#&\strut\quad\hfil#\hfil\quad&
7: \vrule#&\strut\quad#\hfil\quad&
8: \vrule#\cr
9: height2pt&\omit&&\omit&&\omit&\cr
10: &Registers&&Forward&&\hfil Description&\cr
11: height2pt&\omit&&\omit&&\omit&\cr
12: \noalign{\hrule}
13: height2pt&\omit&&\omit&&\omit&\cr
14: &0&&&&zero&\cr
15: &1&&&&reserved for assembler (temporary)&\cr
16: &2&&yes&&standard argument ({\tt saved\_ptrs[0]})&\cr
17: &3&&yes&&standard continuation ({\tt saved\_ptrs[1]})&\cr
18: &4&&yes&&standard closure ({\tt saved\_ptrs[2]})&\cr
19: &5--19&&yes&&miscellaneous registers&\cr
20: &20&&&&{\tt my\_arithtemp} (internal to {\tt CMACHINE})&\cr
21: &21&&yes&&{\tt my\_ptrtmp} (internal to {\tt CMACHINE})&\cr
22: &22&&special&&store pointer (list of stored locations)&\cr
23: &23&&special&&data pointer (next available word on heap)&\cr
24: &24--25&&&&arithmetic temporaries 1~and~2 (exported by {\tt CMACHINE})&\cr
25: &26--27&&&&reserved for operating system kernel&\cr
26: &28&&&&global pointer (used by C)&\cr
27: &29&&&&stack pointer (used by C)&\cr
28: &30&&yes&&points to current exception handler&\cr
29: &31&&special&&reserved for the assembler (to hold program counter)&\cr
30: height2pt&\omit&&\omit&&\omit&\cr
31: }\hrule}}
32: \endinput
33:
34:
35: \def\*{\rlap{${}^*$}}
36: I've put an asterisk (\*) next to registers that are forwarded
37: during garbage collection.
38: The data pointer and store pointer are special to garbage collection
39: \begin{itemize}
40: \item[\$0] zero
41: \item[\$1] reserved for the assembler (as a temporary)
42: \item[\$2\*] standard argument; also [[saved_ptrs[0] ]]
43: \item[\$3\*] standard continuation; also [[saved_ptrs[1] ]]
44: \item[\$4\*] standard closure; also [[saved_ptrs[2] ]]
45: \item[\$5--\$19\*] miscellaneous registers;
46: may contain only pointers or tagged integers.
47: \item[\$20] arithmetic temporary number 3;
48: may contain anything except pointers
49: \item[\$21\*] pointer temporary 1;
50: may contain only pointers or tagged integers.
51: \item[\$22\*] store pointer;
52: used to track mutable (assigned) cells for garbage collection
53: \item[\$23] data pointer;
54: this points to the first available word in the
55: garbage-collectible area, the word that will be the
56: descriptor of a newly-created object.
57: \item[\$24--\$25] arithmetic temporaries number 1 and 2;
58: may contain anything except pointers
59: \item[\$26--\$27] reserved for the operating system kernel
60: \item[\$28] the ``global pointer'' (whatever that is)
61: \item[\$29] the stack pointer; mostly unused
62: \item[\$30\*] points to the current exception handler
63: \item[\$31] reserved for the assembler (to hold the program counter)
64: \end{itemize}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.