VAX MACRO
| Paradigms | non-structured, imperative |
|---|---|
| Family | assembly language |
| Developer | Digital Equipment Corporation |
| First appeared | 1977 |
| Typing discipline | Untyped |
| Scope | Lexical |
| Implementation language | assembly language |
| Platform | Native: VAX With translation: Alpha, Itanium, x86-64 |
| OS | VMS |
| Influenced by | |
| MACRO-11 | |
| Influenced | |
| MACRO-64 | |
VAX MACRO is the computer assembly language implementing the VAX instruction set architecture for the OpenVMS operating system, originally released by Digital Equipment Corporation (DEC) in 1977. A significant amount of VMS is written in VAX MACRO.[1]
The syntax, directives, macro language, and lexical substitution operators of VAX MACRO formerly appeared in MACRO-11, the assembler for the PDP-11 series of computers. The MACRO-32 assembler supported the VAX processors developed and manufactured by DEC. It ran under the VMS operating system and produced object files suitable for the VMS linker. The MACRO-32 assembler and linker were bundled with the operating system.
VAX MACRO on other architectures
The port of VMS to the DEC Alpha architecture led to the creation of a MACRO-32 compiler, which treated VAX MACRO as an input language and generated optimized Alpha object code. The MACRO-32 compiler was necessary since it was not feasible to rewrite the large quantity of VAX MACRO code present in the VMS operating system, layered products, and third-party software.[1] The MACRO-32 compiler was subsequently ported to Itanium and x86-64 as OpenVMS was ported to those architectures.[2][3]
Due to the difficulty of mapping low-level VAX semantics onto other architectures, most VAX MACRO programs written for the native VAX assembler require modification before they can be compiled with the MACRO-32 compiler. These changes include adding directives to explicitly define certain behaviours of the code, and removing code which relies on non-portable constructs.[1] Furthermore, the MACRO-32 compiler allows direct access to certain Alpha architecture features, including Alpha's 32 registers, 64-bit addressing, and a subset of Alpha instructions. These are mapped onto equivalents on Itanium and x86-64, but are not supported by the original VAX MACRO assembler.[4]
The OpenVMS assembler for Alpha assembly code is named MACRO-64. Despite sharing a similar name and macro syntax, MACRO-64 is otherwise unrelated to MACRO-32.[5]
References
- ↑ 1.0 1.1 1.2 Kronenberg, Nancy P.; Benson, Thomas R.; Cardoza, Wayne M.; Jagannathan, Ravindran; Thomas, Benjamin J. III (1992). "Porting OpenVMS from VAX to Alpha AXP". Digital Technical Journal 4 (4). http://www.hpl.hp.com/hpjournal/dtj/vol4num4/vol4num4art7.pdf. Retrieved 2020-08-16.
- ↑ "OpenVMS Ask the Wizard – Macro32 Assemblers and Compilers? OpenVMS I64?". 2004-09-09. https://forum.vmssoftware.com/viewtopic.php?f=35&t=8377.
- ↑ "State of the Port to x86". March 2016. http://vmssoftware.com/pdfs/State_of_the_Port_March2016.pdf.
- ↑ "VSI MACRO Compiler User’s Guide". VMS Software, Inc.. 2021. https://vmssoftware.com/docs/VSI_MACRO_COMPILER.pdf.
- ↑ "VSI OpenVMS Programming Concepts Manual". VMS Software Inc.. April 2020. https://vmssoftware.com/docs/VSI_PROGRAM_CONCEPTS_VOL_I.pdf.
External links
- VSI OpenVMS VAX MACRO and Instruction Set Reference Manual
- VSI OpenVMS MACRO Compiler Porting and User's Guide
Template:Digital Equipment Corporation
