|
|
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.