[Info-vax] VAX VMS going forward
John Reagan
xyzzy1959 at gmail.com
Mon Jul 27 14:41:25 EDT 2020
On Monday, July 27, 2020 at 1:43:51 PM UTC-4, Arne Vajhøj wrote:
>
> It is not a 32 mode and a 64 bit mode.
>
> The CPU always use 64 bit addresses.
>
> A program is not running in any mode.
>
> It is API's that can use either 64 bit addresses or 32 bit "compressed"
> addresses (by only passing the lower part and assuming high bits
> are all 0).
>
32-bit addresses are SIGN extended to 64-bits. The Alpha LDL instruction sign-extends for this reason. S0 addresses 80000000 become FFFFFFFF.80000000. Alpha always uses 64-bit addresses.
Itanium also uses 64-bit addresses exclusively. Its 'ld4' instruction zero-extends so you'll see the compiler inserting 'sxt4' instructions to explicitly sign-extend a longword after a load to mimic the Alpha behavior.
x86 zero-extends as well with a 'movl', but has a richer instruction set so you'll see 'movslq' without the need for an extra sign-extend instruction. x86 in 64-bit mode only has 64-bit addresses. Many of the old school memory descriptor flags are simply ignored.
More information about the Info-vax
mailing list