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