|
|
BSD 4.1
; Liszt documentation Addresses There are four types of addresses used internally in Franz. Symbolic: These are the names of lisp objects, such as `a', `foo', 34, or 3.234234. A name is either a local variable, a special variable or a number. A number is either a small fixnum, large fixnum, bignum or floating point number. IADR (intermediate address) This type of address is generated from a symbolic address by d-loc, d-loclit and the routines d-simple, d-rsimple which call them. The forms are Nil - the location or value of nil. T - the location or value of t. reg - register r0, which is where the result of function calls are stored. stack - the address pointed to by np with np incremented after the value is stored. I.E. this is (r6)+ unstack - the address one word below np (np is decremented before accessing. I.E this is -(r6) <atom> - this is just <atom> . This allows strange forms to be passed directly. (stack n) - The n'th value on the namestack for this function. The first value 0(r10) is (stack 1). (vstack n) - The cdr of the n'th value on the namestack. That is, (stack 1) is *0(r10) (bind n) - The value of the n'th value on the bindstack. If we are talking about a symbol, then this is the value of the symbol, if we are talking about a list this this is the cdr of the list (although this is a rare use). (bind 1) corresponds to *0(r8). (lbind n) - The n'th value on the bindstack. If we are talking about object foo then this is the address of foo in memory. (fixnum n) - This is the address of small fixnum n in memory. A small fixnum is in the range -1024 to 1023. (immed n) - The is the immediate constant n. EIADR (extended intermediate address) This address is generated from an IADR by e-cvt. It represents symbolically a vax address. <atom> - This corresponds to <atom>. (n <atom>) - This corresponds to n(<atom>) (stack n+1) and (lbind n+1) are converted to these forms. (n <atom1> <atom2>) - This corresponds to n(<atom1>)[<atom2>] There is currently no IADR which generates this. (* n <atom>) - This corresponds to *n(<atom>) (vstack n+1) and (bind n+1) are converted to these forms. (+ <atom>) - This corresponds to (<atom>)+ stack is converted to this form. (- <atom>) - This corresponds to -(<atom>) unstack is converted to this form. ($ <numb>) - This corresponds to $<atom> (immed <numb>) is converted to this form. (# <numb>) - This corresponds to $<loc> where <loc> equals the base of the fixnums (0x1400) plus 4 * <numb> (fixnum <numb>) is converted to this form (* # <numb>) - This corresponds to $<numb>. It is generated by d-rsimple occasionally when you ask for the cdr of a number (which you do sometimes when you are compiling fixnum operators). Vax Unix assembler addresses The addresses are printed from a EIADR by e-cvtas. The conversions 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.