MACRO

From VSI OpenVMS Wiki
Jump to: navigation, search

MACRO is a DCL command that invokes the MACRO compiler.

You have two major syntax options, MACRO/MIGRATION and MACRO/ALPHA. MACRO/MIGRATION invokes the MACRO-32 compiler, MACRO/ALPHA invokes the MACRO-64 compiler.

Qualifiers

  • /DEBUG=option includes or excludes local symbols in the symbol table or traceback information in the object module. Options include:
    • ALL: makes local symbols and traceback information in the object module available to the debugger (equivalent to /ENABLE=(DEBUG,TRACEBACK))
    • NONE: Makes local symbols and traceback information in the object module unavailable to the debugger (equivalent to /DISABLE=(DEBUG,TRACEBACK))
    • SYMBOLS: makes all local symbols in the object module available and all traceback information unavailable to the debugger. This qualifier is equivalent to /ENABLE=SYMBOLS.
    • TRACEBACK: makes traceback information in the object module available and local symbols unavailable to the debugger. This qualifier is equivalent to /ENABLE=TRACEBACK.
  • /FLAG=option specifies which classes of informational messages the compiler reports. The options include:
    • ALIGNMENT reports unaligned stack and memory references.
    • ALL enables all options.
    • ARGLIST reports that the argument list has been homed. (See Section 2.4.1.)
    • BAD_FIELD_USAGE reports BBC/BBS instructions that attempt to use bits beyond 31.
    • CODEGEN reports run-time code generation, such as self-modifying code. (See Section 3.2.2.)
    • COMPILER_VERSION (OpenVMS I64 only) prints compiler version to SYS$ERROR.
    • DIRECTIVES reports unsupported directives.
    • HINTS reports input/output/auto-preserved register hints.
    • INDIRECT_CALLS reports CALLS/CALLG instructions that have an indirect target and are not preceded by a .USE_LINKAGE directive.
    • INDIRECT_JSB reports JSB instructions that have an indirect target and are not preceded by a .USE_LINKAGE directive.
    • INSTRUCTIONS reports instructions that use absolute addresses that might compile correctly, but should be examined anyway, because the desired absolute address might be different on the system.
    • JUMPS reports branches between routines.
    • LINKAGE reports linkage information provided to the OpenVMS linker.
    • NONE disables all options.
    • STACK reports all messages caused by user stack manipulation.
  • /DIAGNOSTICS=filespec creates a file containing assembler messages and diagnostic information.
  • /MACHINE
  • /ENABLE= option and /DISABLE=option provide initial settings for the compiler functions that can be controlled by the .DISABLE and .ENABLE macro directives. The options include:
    • DEBUG excludes local symbol table information in the object file for use with the debugger. If the /DEBUG qualifier is also specified, it overrides /DISABLE=(DEBUG,TRACEBACK) or /ENABLE=(DEBUG,TRACEBACK), regardless of their order on the command line.
    • FLAGGING deactivates compiler flagging.
    • GLOBAL disables the assumption that undefined symbols are external symbols.
    • OVERFLOW deactivates production of overflow trap code for the following opcodes: ADDx, ADWC, INCx, ADAWI, SUBx, SBWC, DECx, MNEGx, MULx, CVTxy,(where x is greater than y, for example CVTLB), AOBxx, ACBL, and SOBxx.
    • QUADWORD disables support for quadword literal and address expressions.
    • SUPPRESSION prevents the listing of unreferenced symbols in the symbol table.
    • TRACEBACK disables the provision of traceback information to the debugger. If the /DEBUG qualifier is also specified, it overrides /DISABLE=(DEBUG,TRACEBACK) or /ENABLE=(DEBUG,TRACEBACK), regardless of their order on the command line.

By default, at compiler activation, FLAGGING, GLOBAL, TRACEBACK, and SUPPRESSION are enabled, and DEBUG, OVERFLOW, and QUADWORD are disabled.

  • /OPTIMIZE
  • /PRESERVE
  • /LIBRARY
  • /RETRY_COUNT
  • /LIST
  • /SYMBOLS
  • /OBJECT
  • /TIE
  • /SHOW
  • /UNALIGNED
  • /WARN