1 12/12/82 Virtual Address Constructs
2
3 Accessing data requires some pointer value to define an address space.
4 The generation of the pointer value is performed by resolving a virtual
5 address VIRTUAL-ADDR. A VIRTUAL-ADDR consist of two parts, a segment
6 number and a word offset.
7
8 Analyze_multics azm will resolve VIRTUAL-ADDR'S from the following
9 types of information:
10
11
12 Symbols:
13 is a symbolic name for a segment number and an offset i.e. sst$ptl
14 can be resolved to the correct segment number and offset of the page
15 table lock.
16
17
18 Segment name:
19 a segment name can be resolved in many ways, but it can only provide
20 one part of the virtual address; azm uses 0 as the default offset
21 for this pointer value i.e. tc_data is resolved to SEGNO|0.
22
23
24 Segment number:
25 a segment number needs no resolution, but a default action needs to
26 be taken for the offset the default is 0 i.e. SEGNO|0.
27
28
29 Segment name/number and offset:
30 The VIRTUAL-ADDR in this case can be a segment name or segment
31 number and an octal offset i.e. the construct of pds|20 is
32 translated to SEGNO|20 or dseg|5 is 0|5. The notation "|" and "$"
33 must be used without spaces e.g. 244|0 or sst$cmp.
34
35
36 Temporary pointers:
37 azm keeps a set of 11 temporary pointers per translation. A
38 translation is one complete entity such as an "FDUMP". These
39 pointers can be set with the set request e.g. set sp 230|100.
40 They can be referenced by other requests as another type of "symbol"
41 in a VIRTUAL-ADDR expression, after they have been set. If not set,
42 these pointers are null.
43
44
45 Offset Operators:
46 The operators "+N" and "-N" immediately preceding an octal number,
47 or VIRTUAL-ADDR construct can be used to alter the offset of a
48 virtual address. N is a number interpreted in octal. No spaces are
49 allowed between the operator and the N. For example, sst$ptl +30
50 are resolved to be the SEGNO for sst_seg with the offset of ptl plus
51 30 octal locations; sst$ptl+30 is also valid.
52
53
54 Indirection:
55 A VIRTUAL-ADDR can imply indirection. The indirect word can be used
56 as an ITS pair if it is a valid ITS word pair; if not, the upper
57 half of the word is used. The following VIRTUAL-ADDR construct is
58 used to specify indirection sst$cmp*. The format of an indirect
59 pointer value is:
60
61 segno|offset,* segname|offset,* symbol,*
62 temp_ptr,* temp_ptr|offset,*
63
64
65 Examples of indirection:
66 17|230,* sst|230,* sst$cmp,*+2
67 sp,* sp|230,*
68
69
70