Define floating-point register symbol directive
Format
.DEFINE_FREG regsym regnum
1 – Parameters
regsym
A MACRO-64 identifier.
regnum
An assembly-time expression or a currently defined register
symbol.
2 – Description
The identifier you specify as the first argument to .DEFINE_FREG
becomes a floating-point register symbol. Thereafter, it cannot
be used as a MACRO-64 identifier. Specifically, the user-defined
register symbol is only allowed where a register is allowed. In
this sense, the user-defined register symbol is reserved until
the end of the assembly unit or until you delete its definition
(see .UNDEFINE_REG), whichever occurs first.
The second argument to .DEFINE_FREG can be either an integer
expression or a currently defined floating-point register symbol.
An integer expression indicates the register number to assign
to the register symbol. The expression can contain no forward
or external references and must be in the range of 0 to 31.
Alternatively, you can define a register symbol in terms of
another currently defined register symbol. A currently defined
register symbol is a predefined register symbol or a register
symbol that you have previously defined. In this case, the new
register symbol you specify with the first argument receives the
current value of the register symbol you specify with the second
argument.
3 – Notes
o You cannot define a floating-point register in terms of an
integer register and vice versa.
o You cannot redefine a currently defined register symbol with a
different register number. To redefine a register symbol, you
must first delete the old definition with the .UNDEFINE_REG
directive.
4 – Example
.DEFINE_IREG A0 16 ; A0 is integer register 16
.DEFINE_IREG A1 R17 ; A1 is integer register 17,
; defined in terms of the
; predefined R17 register symbol
.DEFINE_IREG PTR A0 ; PTR is integer register 16,
; defined in terms of the
; previously-defined A0 register
; symbol
.DEFINE_FREG $F0 0 ; $F0 is floating register 0
.DEFINE_FREG $F1 F1 ; $F1 is floating register 1,
; defined in terms of the
; predefined F1 register symbol
.DEFINE_FREG RADIUS $F1 ; RADIUS is floating register 1,
; defined in terms of the
; previously defined $F1
; register symbol
.DEFINE_IREG X1 R5 ; X1 is integer register 5,
; defined in terms of the
; predefined R5 register symbol
.DEFINE_IREG X1 5 ; 2nd definition is the same
; value, so no diagnostic
; results
.DEFINE_IREG X1 7 ; Warning: redefinition with a
; different value
.DEFINE_IREG X2 F5 ; Error: cannot define an integer
; register in terms of a
; floating register
LDQ R1, (PTR) ; LDQ R1, (R16)
LDG RADIUS, (A1) ; LDG F1, (R17)