[Info-vax] OT: news from the trenches (re: Solaris)
John Reagan
xyzzy1959 at gmail.com
Fri Mar 13 11:29:54 EDT 2015
On Friday, March 13, 2015 at 10:05:05 AM UTC-4, li... at openmailbox.org wrote:
>
> 64 bit support was and is a disaster. 32 bit and 64 bit code can't coexist.
> The ABI is not upward compatible. You can't use 64 bit registers in a 32
> bit piece of code running on 64 bit hardware. You can't call 32 bit code
> from 64 bit code and vice versa and you can't combine code written in both
> ABIs in one executable.
That is all software... Recent versions of binutils added support for the x32 ABI which lets you use 64-bit registers/instructions in a 32-bit program.
https://sourceware.org/glibc/wiki/x32
The 32 vs 64 ABI differnces are indeed a pain. OpenVMS supports mixed pointer sizes on Alpha and Itanium. You don't see mixed-pointer sizes in the Linux world. (NonStop also supports mixed pointer sizes). You end up picking the 64-bit ABI and constantly sign-extending 32-bit pointers all over the place. Even the varargs in the 32-bit vs 64-bit ABI is quite different. I find the 64-bit version confusing but that is what is out there.
Things like instruction encoding aren't meaningful to most people. Look at the Itanium bit encoding if you want to turn your stomach. However, the encoding isn't the problem with Itanium. Do I like all the odd prefix bytes pounded into the architecture? No, not really. Does it make the compiler's job any harder? Probably not much.
More information about the Info-vax
mailing list