[Info-vax] Hard links on VMS ODS5 disks

John Reagan xyzzy1959 at gmail.com
Sat Jul 22 16:57:03 EDT 2023


On Saturday, July 22, 2023 at 10:26:27 AM UTC-4, Arne Vajhøj wrote:
> On 7/20/2023 8:49 AM, Simon Clubley wrote: 
> > I get the impression that you have had to spend a lot of effort to 
> > duplicate low-level behaviour in a way that simply isn't a concern 
> > with other operating systems due to the need, especially, to support 
> > Macro-32 and ensure that code written at this low-level, and which 
> > uses the various idioms as a result, continues to work.
> I believe Macro-32 is a relative simple compiler. And when they got 
> that then they can compile the existing Macro-32 code. 
> 
Well, I just spit my wine out reading that.

Simple?  Try to deal with condition codes.  Try to deal with routines
that jump between each other.  Try to make the stack "look like a VAX"
on platforms that say otherwise. :)

There are three main parts of the Macro compiler.  
-The parser (written in Macro-32) is 99% target independent.  
- The flow analyzer (written in C) looks for all those condition codes, 
loops, etc.  It has some knowledge about the calling standard (how 
many arguments in registers, etc.)
- The code generator that maps internal Macro operators that feel
like "instructions".  Opcodes, mem-operands, reg-operands, etc.
Each of those had to be recoded to pick the correct x86 instruction.
For x86, we call the LLVM MC interface to emit x86 instructions.
The way LLVM enumerates the x86 opcodes and registers is a
little funky and needed some abstractions we didn't need on Alpha
or Itanium.  


> I believe that VSI is mostly reusing existing Macro-32 code 
> and writing new code in C. 
> 
Actually there was a good chunk of Macro-32 that was rewritten into
C.  We redid much of the memory management code for example.  It
needed to change to deal with the more complex page table structures
on x86, etc.  Decided to rewrite into C.


> 
> It means that changing from 32 bit pointers to 64 bit pointers is 
> way easier in C than in Macro-32. 
> 
> But based on what we know about the port, then VSI has not changed 
> the VMS kernel from 32 bit pointers to 64 bit pointers (aka moving 
> everything from S0 and S1 to S2). 
> 

Actually lots more stuff is now in S2 space and several internal pointers
were lengthened from 32-bits to 64-bits.



More information about the Info-vax mailing list