VMS Help  —  MACRO  /ALPHA  Supplied Library Macros, Programming Considerations, Making Multiple Calls From the Same Routine
    The $CALL macro generates the following instruction sequence:

     LDQ R26, code_address_offset(Rls)              ; load code address
     LDQ R27, procedure_descriptor_address_offset(Rls) ; load procedure
                                                       ;    descriptor
                                                       ;    address
     JSR R26, R26                                      ;

    The contents of R26 and R27 are erased as a result of using the
    $CALL macro. This is important since Rls in the previous sequence
    is typically R27. Thus, if you require subsequent access to your
    linkage section, such as when making subsequent calls, you need
    to make a working copy of R27 to use after the first call.

    Note that $CALL also overwrites the values in the argument
    registers, and the scratch registers specified or the default
    set by the SCRATCH_REGS argument, when you pass arguments to the
    called routine.
Close Help