[ Home ]
SBCL Internals

The pages on this CLiki-driven site can be edited by anybody at any time. No warranty of any kind can therefore be made; any implied warranties of merchantability or fitness for a particular purpose are expressly disclaimed
[ Home ] [ Recent Changes ] [ About CLiki ] [ Text Formatting ]

Some people think it stands for Temporary Name. (Aside: it does, almost certainly: see Brooks, Gabriel and Steele, An Optimizing Compiler for Lexically Scoped Lisp, ACM 1982.)

In IR2, a TN represents a value used in a computation. It has a Primitive Type, which determines the set of SCs in which this TN may be found.

TNs are rather like the "infinite registers" in some other compilers: there are SCs for registers and for control stack locations

Most references to TNs occur in VOPs

----

The first time I ever heard the term TN was in the era of the CMU Bliss (circa 1975?) compiler work where a great deal of effort was expended getting code generated that made optimal use of registers and stacks given the many curious instruction operands available on the Vax, PDP-11, and PDP-10. The general idea was that every node in the expression tree computed a value and you were going to have to put it someplace on the way to it becoming an operand in for the upstream nodes. So all those were the TN.

----

Question: What's the difference between * and *-tn?

Answer: [ As speculated by Christopher Rhodes on #lisp ]

13:38 < Krystof> al-tn refers to AL, always
13:39 < Krystof> eax or something refers to some argument to a VOP; if you want it to actually 
                 *be* the register eax, you need to specify :offset eax-offset in the VOP
13:40 < Krystof> al-tn refers to the register AL always, not the lisp symbol AL :-)

----

TN: Technical Note


Pages in this topic: Primitive Type   SC  


Also linked from: Compiler   index   pseudo-atomic   Registers   SB   stack allocation   TNs  

CLiki pages can be edited by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively