User`s guide

Preparing to Port Macro-32 Code
1.3 Step-by-Step Porting Process for OpenVMS VAX to OpenVMS Alpha or OpenVMS I64
3. Invoke the compiler to compile the module. A suggested command procedure
for doing this appears in Section 2.12.
By default, the compiler flags unaligned stack and memory references, routine
branches, potentially problematic instructions, and self-modifying code. If
you specify /FLAG=HINTS on the command line, the compiler will provide
suggestions for the input and output register arguments of the entry point
directives you inserted at Step 2.
4. Take note of the problems reported by the compiler.
The MACRO compiler generally issues the same messages on OpenVMS
Alpha systems and on OpenVMS I64 systems, with the exception of the
prefix:
AMAC on OpenVMS Alpha systems
IMAC on OpenVMS I64 systems
For example:
AMAC-I-ARGLISHOME, argument list must be homed in caller
or:
IMAC-I-ARGLISHOME, argument list must be homed in caller
You can invoke the Help Message utility for an explanation and user action
for each compiler message you receive.
For information about the Help Message utility, refer to DCL help or the
OpenVMS System Messages: Companion Guide for Help Message Users. Also,
Section 1.5 and Chapter 3 provide specific details about VAX MACRO coding
practices that cannot be directly translated to OpenVMS Alpha or OpenVMS
I64 code.
Remember that resolution of the problems detected on this pass might allow
the compiler to discover additional problems on a subsequent pass.
5. Edit the Macro-32 source code. Fix the problems indicated by the compiler
and look for others the compiler might have missed.
However, do not change code just to avoid compiler informational diagnostic
messages. Most of the information-level messages are there to point out
code that will result in less optimal performance on an OpenVMS Alpha or
OpenVMS I64 processor but will compile correctly. If you have examined the
offending instructions in the source code and are convinced that all is well,
leave the code alone. Remember that you can use the command line qualifiers
/FLAG and /WARN to control diagnostic message generation. Also, the
.ENABLE and .DISABLE directives can turn off information level messages
for segments of code within a module.
6. Add input, output, preserve, and scratch arguments, as appropriate, to
the entry point directives you provided in Step 2 and supply a list of pertinent
registers for each specified argument. Section 2.6 can help you determine
which registers to list.
7. For OpenVMS I64 systems only, add linkage directives (.CALL_LINKAGE,
.DEFINE_LINKAGE) to tell the compiler about routines that return values
in registers other than R0/R1 and about routines written in a languge other
than Macro-32 that are called with the JSB instruction. In addition, add the
.USE_LINKAGE directive at each indirect CALLS/CALLG instruction if the
routine has a non-standard return; add the .USE_LINKAGE directive at each
Preparing to Port Macro-32 Code 1–5