|
|
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.