Annotation of researchv10no/cmd/sml/src/mips/regs.tex, revision 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.