On Fri, Jul 12, 2024 at 12:23 PM John R Levine <johnl(a)taugh.com> wrote:
On Thu, 11 Jul 2024, Paul Winalski wrote:
Yes, that was precisely my point, and thank you
for stating it more
clearly
and concisely than I did. The VAX MACRO compiler
takes in VAX assembly
source code, not binary VAX instructions.
Does anyone know how extensively they used the macro facilities? You can
write much higher level stuff as macros than as single instructions, which
makes it a lot easier to do efficient translation. For example, on OS/360
you'd write a GET macro to retrieve the next record (or a pointer to it)
from a file, which was a lot easier to figure out than the control blocks
and subroutine calls the macros expanded into.
Macros were used very extensively in VAX MACRO, both for user programming
and in
the operating system. All of the low-level system calls for user
programs were implemented and documented as macros. The OS assembly code
made heavy use of macros as well.
Outside the VAX/VMS development group, BLISS was DEC's standard
implementation language. In the development organizations I worked in
(software development tools and compilers), we did almost zero programming
in assembly code. The only assembly-level programming I ever did was the
innermost loop of my VAX/VMS Mandelbrot set program and a device driver to
implement Unix-style pipes on VMS. I did the latter in assembly code only
because there was no documented HLL interface for writing VAX/VMS device
drivers.
As Clem Cole observed, Dave Cutler hated BLISS with a passion. All of his
work on the VAX/VMS operating system was in assembly code. Because of this
there is still a large amount of OpenVMS still written in VAX MACRO. But
the RMS (Record Management Services, the VMS file system user interface)
group wrote all of their code in BLISS.
After leaving the VMS group Dave went on to design and implement a common
compiler back end for VAX, the VAX Code Generator (VCG), which was the
optimizer and back end for VAX PL/I, VAX C, and VAX Ada. The earlier
generations of VAX/VMS compilers (VAX Fortran, VAX Pascal, VAX COBOL) each
had their own back ends. Cutler later did get HLL religion. His real-time
operating system for the VAX, VAXeln, was written almost entirely in Pascal.
-Paul W.