|
|
1.1 ! root 1: ; Liszt documentation ! 2: ! 3: Addresses ! 4: There are four types of addresses used internally in Franz. ! 5: ! 6: Symbolic: ! 7: These are the names of lisp objects, such as `a', `foo', 34, ! 8: or 3.234234. ! 9: A name is either a local variable, a special variable or a ! 10: number. A number is either a small fixnum, large fixnum, ! 11: bignum or floating point number. ! 12: ! 13: IADR (intermediate address) ! 14: This type of address is generated from a symbolic address by ! 15: d-loc, d-loclit and the routines d-simple, d-rsimple which ! 16: call them. The forms are ! 17: ! 18: Nil - the location or value of nil. ! 19: T - the location or value of t. ! 20: reg - register r0, which is where the result of function calls ! 21: are stored. ! 22: stack - the address pointed to by np with np incremented after ! 23: the value is stored. I.E. this is (r6)+ ! 24: unstack - the address one word below np (np is decremented before ! 25: accessing. I.E this is -(r6) ! 26: <atom> - this is just <atom> . This allows strange forms to be ! 27: passed directly. ! 28: (stack n) - The n'th value on the namestack for this function. ! 29: The first value 0(r10) is (stack 1). ! 30: (vstack n) - The cdr of the n'th value on the namestack. ! 31: That is, (stack 1) is *0(r10) ! 32: (bind n) - The value of the n'th value on the bindstack. If ! 33: we are talking about a symbol, then this is the value ! 34: of the symbol, if we are talking about a list this ! 35: this is the cdr of the list (although this is a rare ! 36: use). (bind 1) corresponds to *0(r8). ! 37: (lbind n) - The n'th value on the bindstack. If we are talking ! 38: about object foo then this is the address of foo ! 39: in memory. ! 40: (fixnum n) - This is the address of small fixnum n in memory. ! 41: A small fixnum is in the range -1024 to 1023. ! 42: (immed n) - The is the immediate constant n. ! 43: ! 44: ! 45: EIADR (extended intermediate address) ! 46: This address is generated from an IADR by e-cvt. It ! 47: represents symbolically a vax address. ! 48: ! 49: <atom> - This corresponds to <atom>. ! 50: (n <atom>) - This corresponds to n(<atom>) ! 51: (stack n+1) and (lbind n+1) are converted to these forms. ! 52: (n <atom1> <atom2>) - This corresponds to n(<atom1>)[<atom2>] ! 53: There is currently no IADR which generates this. ! 54: (* n <atom>) - This corresponds to *n(<atom>) ! 55: (vstack n+1) and (bind n+1) are converted to these forms. ! 56: (+ <atom>) - This corresponds to (<atom>)+ ! 57: stack is converted to this form. ! 58: (- <atom>) - This corresponds to -(<atom>) ! 59: unstack is converted to this form. ! 60: ($ <numb>) - This corresponds to $<atom> ! 61: (immed <numb>) is converted to this form. ! 62: (# <numb>) - This corresponds to $<loc> where <loc> equals ! 63: the base of the fixnums (0x1400) plus 4 * <numb> ! 64: (fixnum <numb>) is converted to this form ! 65: (* # <numb>) - This corresponds to $<numb>. It is generated ! 66: by d-rsimple occasionally when you ask for the ! 67: cdr of a number (which you do sometimes when you ! 68: are compiling fixnum operators). ! 69: ! 70: Vax Unix assembler addresses ! 71: The addresses are printed from a EIADR by e-cvtas. The conversions ! 72: are shown in the above section.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.