Annotation of researchv10dc/cmd/sml/doc/mips/regs.tex, revision 1.1.1.1

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} 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.