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)