[Info-vax] Userland programming languages on VMS.

Andreas Gruhl gruhl at isidata.de
Mon Jan 31 05:05:31 EST 2022


Johnny Billquist schrieb am Montag, 31. Januar 2022 um 09:33:06 UTC+1:
> On 2022-01-31 01:43, Arne Vajhøj wrote: 
> > On 1/30/2022 7:19 PM, Simon Clubley wrote: 
> >> On 2022-01-29, Arne Vajhøj <ar... at vajhoej.dk> wrote: 
> >>> On 1/29/2022 1:53 AM, George Cornelius wrote: 
> >>>> 
> >>>> Works on Eisner. 
> >>>> 
> >>>> $ show sys/noproc 
> >>>> OpenVMS V8.4-2L2  on node EISNER   29-JAN-2022 [...] 
> >>>> 
> >>>> Here's the memory layout synopsis from a linker map: 
> >>>> 
> >>>> Virtual memory allocated:                         00010000 0005FFFF 
> >>>> 00050000 (327680. bytes, 640. pages) 
> >>>> 64-Bit Virtual memory allocated:                  00000000 00000000 
> >>>> 00000000 
> >>>>                                                     80000000 
> >>>> 80010000 00010000 (65536. bytes, 128. pages) 
> >>>> 
> >>>> The example, though, shows too small an allocation to escape 32 bit 
> >>>> address space. 
> >>> 
> >>> I consider 0000000080000000 to be 64 bit space. 
> >>> 
> >>> 0000000000000000 - 000000007FFFFFFF is P0 and P1 space 
> >>> FFFFFFFF80000000 - FFFFFFFFFFFFFFFF is S0 and S1 space 
> >>> 0000000080000000 and upward is P2 space 
> >>> 
> >> 
> >> I think George's point is that this specific address can be 
> >> represented in a 32-bit pointer. 
> > 
> > It can't. 
> > 
> > A 32 bit pointer with the value 80000000 will end up as 
> > FFFFFFFF80000000.
> Since when are pointers considered to be signed and need sign extension? 
> 
> Johnny

I guess pointers are sign extended since the arrival of 64 bit addresses with alpha.
It obviously was felt important that 32 bit pointers are still able to access system space.
For normal user programs this is almost never needed, however.
It would be much more useful to have unsigned pointers and unsigned parameter descriptors.
This would allow access to the first 2 GByte of P2 space via 32 bit pointers.
As a workaround we have quite a lot of pascal routines which explicitly extend the
32 bit pointers passed to them to 64 bits without sign extension.


More information about the Info-vax mailing list