[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