3 ms·
Most of the kernel was in VAX assembly (I've seen source code listings of VAX/VMS circa V4.x). They were able to port the kernel over to other architectures by
by ch_123 4y ago
Most of the kernel was in VAX assembly (I've seen source code listings of VAX/VMS circa V4.x). They were able to port the kernel over to other architectures by creating a compiler that treated VAX assembly as a high level language. This approach came with its costs - even to this day, large parts of VMS remain 32-bit only because it was not possible to automatically make 32-bit assembly code into 64-bit object code for other platforms. Even in programs which use 64-bit addressing, VMS essentially requires you to use a mix of 32-bit and 64-bit pointers in the same program.[1]
A similar problem (AFAIK) befell BLISS - BLISS code for the VAX treats all values as 32-bit. There is a separate BLISS-64 compiler for the 64-bit platforms VMS was ported to, but I don't think all the BLISS-32 code was converted over to BLISS-64.[2]
[1] http://www0.mi.infn.it/~calcolo/OpenVMS/ssb71/6467/6467p005.htm#chapter_10 http://www0.mi.infn.it/~calcolo/OpenVMS/ssb71/6467/6467p005....
[2] https://www.cs.tufts.edu/~nr/cs257/archive/ronald-brender/bliss.pdf https://www.cs.tufts.edu/~nr/cs257/archive/ronald-brender/bl...