User`s guide
How the MACRO Compiler Functions on Different Platforms
2.11 Preserving VAX Atomicity and Granularity
The MB or mf instructions cause all memory operations before the MB or
mf instruction to complete before any memory operations after the MB or mf
instruction are allowed to begin.
2.12 Compiling and Linking
The compiler requires the following files:
• SYS$LIBRARY:STARLET.MLB
This is a macro library that defines the compiler directives. When you
compile your code, the compiler automatically checks STARLET.MLB for
definitions of compiler directives.
• SYS$LIBRARY:STARLET.OLB
This is an object library containing emulation routines and other routines
used by the compiler. When you link your code, the linker links against
STARLET.OLB to resolve undefined symbols.
For information about compiler qualifiers, see Appendix A.
2.12.1 Line Numbering in Listing File
The macro expansion line numbering scheme in the listing file is Xnn/mmm,
where Xnn shows the nesting depth and mmm is the line number relative to the
outermost macro.
Example 2–1 shows an OpenVMS I64 listing file. The source portion of an
OpenVMS Alpha listing file is essentially the same.
Example 2–1 Example of Line Numbering in an OpenVMS I64 Listing File
00000000 1 ;
00000000 2 ; This is the Itanium (previously called "IA-64") version of
00000000 3 ; ARCH_DEFS.MAR, which contains architectural definitions for
00000000 4 ; compiling VMS sources for VAX, Alpha, and I64 systems.
00000000 5 ;
00000000 6 ; Note: VAX, VAXPAGE, and IA64 should be left undefined,
00000000 7 ; a lot of code checks for whether a symbol is
00000000 8 ; defined (e.g. .IF DF VAX) vs. whether the value
00000000 9 ; is of a expected value (e.g. .IF NE VAX).
00000000 10 ;
00000000 11 ;VAX = 0
00000000 12 ;EVAX = 0
00000000 13 ;ALPHA = 0
00000001 00000000 14 IA64 = 1
00000000 15 ;
00000000 16 ;VAXPAGE = 0
00000001 00000000 17 BIGPAGE = 1
00000000 18 ;
00000020 00000000 19 ADDRESSBITS = 32
00000000 20 .TITLE ug_ex_listing /line numbering in the listing file/
00000000 21 ;
00000000 22 .MACRO test1
00000000 23 clrl r1
00000000 24 clrl r2
00000000 25 tstl 48(sp) ; generate uplevel stack error
00000000 26 clrl r3
00000000 27 .ENDM test1
00000000 28 .MACRO test2
(continued on next page)
How the MACRO Compiler Functions on Different Platforms 2–31