[Info-vax] VAX VMS going forward

Arne Vajhøj arne at vajhoej.dk
Tue Jul 28 13:25:01 EDT 2020


On 7/28/2020 1:19 PM, Arne Vajhøj wrote:
> On 7/28/2020 11:42 AM, John Reagan wrote:
>> On Monday, July 27, 2020 at 5:55:52 PM UTC-4, Stephen Hoffman wrote:
>>> Getting a flat address space and getting rid of the mumble() and
>>> mumble64() and 64-bit objects is no small development project, and
>>> that's past the remediations for the forever-32-bit-app dependencies
>>> that lurk.
>>
>> The address space is flat.  The CPU ensures that.  There are no segment
>> registers on Alpha, Itanium, and x86 (in its 64-bit hardware mode).
>>
>> It is the APIs that drag you down.  Descriptors and itemlists for the 
>> most
>> part.  RMS data structures have some limits as well.
>>
>> And it really all goes back to the Macro-32 code with a PUSHL or PUSHAB.
>> They are 32-bit operations.   And while you might think you can slip in
>> a 64-bit SP value, you hit the wall the moment you see code that attempts
>> to build a descriptor with a PUSHAB -4(FP) PUSHAB n(SP).
> 
> I guess there are 3 ways to go from 32 to 64 bit:
> 
> 1) Let the CPU have a 32 and 64 bit mode and have 32 and 64 bit
>     programs co-exist.
> 
> 2) Only 64 bit mode and change all API's to use 64 bit
>     addresses/pointers.
> 
> 3) Only 64 bit mode and keep existing API's with 32 bit
>     "compressed" addresses/pointers and add new API's with 64 bit
>     addresses/pointers.
> 
> AMD chose to support 32 and 64 bit mode, so Windows,
> Linux etc. use #1 on x86-64.
> 
> DEC chose not to support VAX ISA on Alpha, so #1 was not
> an option.
> 
> That left #2 and #3.
> 
> DEC picked #3. It is rather unique, but given the business
> situation back in the early 1990's then it probably made sense.
> 
> But the result is not pretty.

And to quote myself from last time this was discussed:

#I was not there, so I can't say why.
#
#My guesses would be that the reasons include:
#* big changes in libraries required
#* big changes in compilers reqyured
#* problems in Macro-32 applications where MOVL could be data or a pointer
#* problems with VEST (if it is difficult to distinguish between
#  data and pointer in Macro-32 then it is even worse in binary
#  translation)
#* memory usage - early Alphas came with just 128/256/512 MB of RAM so
#  memory could be tight and changing pointers from 32 to 64 bit can
#  increase memory usage significant for some applications

Arne




More information about the Info-vax mailing list