User`s guide

MACRO Compiler Directives
.SET_REGISTERS
3.
.SET_REGISTERS READ=<R3,R4>, WRITTEN=R5
JSB DO_SOMETHING_USEFUL
In this example, the read/written attributes are used to explicitly declare
register uses which the compiler cannot detect. R3 and R4 are input registers
to the JSB target routine, and R5 is an output register. This is particularly
useful if the routine containing this JSB does not use these registers itself, or
if the SET_REGISTERS directive and JSB are embedded in a macro. When
compiled with /FLAG=HINTS, routines which use the macro would then have
R3 and R4 listed as possible input registers, even if they are not used in that
routine.
.SYMBOL_ALIGNMENT
This directive associates an alignment attribute with a symbol definition for a
register offset. You can use this directive when you know the alignment of the
base register. This attribute guarantees to the compiler that the base register has
the same alignment, which enables the compiler to generate optimal code.
Format
.SYMBOL_ALIGNMENT argument-list
Parameters
argument-list
One of the arguments listed in the following table:
Option Description
long Declares longword alignment for any symbol that you declare after
this directive.
quad Declares quadword alignment for any symbol that you declare after
this directive.
none Turns off the alignment specified by the preceding .SYMBOL_
ALIGNMENT directive.
Description
The .SYMBOL_ALIGNMENT directive is used to associate an alignment attribute
with the fields in a structure when you know the base alignment. It is used in
pairs. The first .SYMBOL_ALIGNMENT directive associates either longword
(long) or quadword (quad) alignment with the symbol or symbols that follow.
The second directive, .SYMBOL_ALIGNMENT none, turns it off.
Any time a reference is made with a symbol with an alignment attribute, the
base register of that reference, in effect, inherits the symbol’s alignment. The
compiler also resets the base register’s alignment to longword for subsequent
alignment tracking. This alignment guarantee enables the compiler to produce
more efficient code sequences.
B–20 Specialized Directives