[Info-vax] Moving away from OpenVMS

John Reagan johnrreagan at earthlink.net
Wed May 23 10:40:21 EDT 2012



"Bob Koehler"  wrote in message 
news:0kp36lkfTvGW at eisner.encompasserve.org...



>   What did it take to port from Alpha to IA64?  Parts should be easier
>   since Alpha had a few features to make VMS work, like PALcode, and
>   IA64 didn't.  A Macro-32 compiler might be harder since IA32 is CISC,
>   so you don't have the one-to-many relationship between VAX
>   instructions and IA32 instructions that you have with VAX to RISC or
>   EPIC.

>   But that latter is a matter of generating efficient code, just
>   getting code to work should not be such a big deal.  A 32 bit add
>   instruction on VAX has different side affects than the same
>   instruction on IA32, but you can still add additional instructions
>   to get the side effects when needed, just like RISC.

Again, don't forget that you need BLISS and C just for the OS and you'll 
want all the rest of the compilers for the customer base.  GEM's old x86 
target was 32-bit only, just did the things that Visual Fortran required, 
and generated Windows object files and Windows debugging info.  All of that 
would need fixing.  And switching to some other code generator (gcc, LLVM, 
open64) might work but I'd have to think about it.

As I've mention before, the smaller register set (as compared to Itanium and 
Alpha) causes more rework for facilities like RMS that currently use lots of 
GLOBAL REGISTERs to pass around implicit arguments between routines.  Since 
the Alpha and Itanium compilers were able to make it all work (there is some 
funky spilling involving GLOBAL REGISTERs on Itanium and corresponding 
funky-ness in the unwind descriptors and LIB$ calling standard routines to 
cover it up), nobody had ever attempted to clean up all those RMS internal 
interfaces.  I suspect a move to x86 would force that issue.  It would also 
impact user code as well (any Macro that specified non-standard arguments to 
.CALL_ENTRY or .CALL_LINKAGE).

So while the Itanium port only required touching of 5% of the code (I think 
that's the number that Clair Grant used to quote), I would guess the number 
would go up to at least 25% of the code for x86 (including some rather 
important code).

On the bright side, x86 doesn't have NaTs. :)





More information about the Info-vax mailing list