VMS Help  —  MACRO  /ALPHA  Directives  .DEFINE FREG
    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)
Close Help