User`s guide

MACRO Compiler Directives
.SYMBOL_ALIGNMENT
Example
OFFSET1 = 4
.SYMBOL_ALIGNMENT LONG
OFFSET2 = 8
OFFSET3 = 12
.SYMBOL_ALIGNMENT QUAD
OFFSET4 = 16
.SYMBOL_ALIGNMENT NONE
OFFSET5 = 20
.
.
.
CLR1 OFFSET2(R8)
.
.
.
MOVL R2, OFFSET4(R6)
For OFFSET1 and OFFSET5, the compiler will use only its tracking information
for deciding if Rn in OFFSET1(Rn) is aligned or not. For the other references, the
base register will be treated as longword (OFFSET2 and OFFSET3) or quadword
(OFFSET4) aligned.
After each use of OFFSET2 or OFFSET4, the base register in the reference is
reset to longword alignment. In this example, the alignment of R8 and R6 will
be reset to longword, although the reference to OFFSET4 will use the stronger
quadword alignment.
.USE_LINKAGE (OpenVMS I64 only)
Establishes a temporary named or anonymous linkage that will be used by
the compiler for the next CALLS, CALLG, JSB, BSBB, or BSBW instruction
processed in lexical order. This directive is used when the target of the next
CALLS, CALLG, JSB, BSBB, or BSBW instruction is not a name, but a run-time
value (for example, CALLS #0, (R6)). When the compiler sees the next CALLS,
CALLG, JSB, BSBB, or BSBW instruction, it will use the associated linkage to
decide which registers need to be saved and restored around the call. After the
instruction is processed, the temporary linkage is reset to null.
Format
.USE_LINKAGE [linkage_name] [,input] [,output] [,scratch] [,preserve]
Parameters
linkage_name
The name of a linkage previously defined with the .DEFINE_LINKAGE directive.
If you specify a linkage_name, you cannot specify an input, output, scratch or
preserve clause.
input=<>
Register set that indicates those registers from which the routine called by the
next CALLS, CALLG, JSB, BSBB, or BSBW instruction receives input values.
Specialized Directives B–21