[Info-vax] Hard links on VMS ODS5 disks

Ian Miller gxys at uk2.net
Mon Jul 24 05:21:45 EDT 2023


On Saturday, July 22, 2023 at 9:57:05 PM UTC+1, John Reagan wrote:
> 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.

I look forward to seeing a OpenVMS x86 internals document at some point particularly on memory management. 



More information about the Info-vax mailing list