[Info-vax] Hard links on VMS ODS5 disks

Chris Townley news at cct-net.co.uk
Sat Jul 22 19:16:38 EDT 2023


On 22/07/2023 21:57, 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 was expecting some sort of answer like this. Shame we are not on a 
modern forum - that would have got a 'like; from me!

-- 
Chris




More information about the Info-vax mailing list