42

I've been trying to find more information about non-Intel versions of Windows NT regarding x86 emulation but found very little about it. There is one sentence about it in the Wikipedia page but the reference link is gone.

Was there any sort of x86 emulation on MIPS, PowerPC or Alpha versions of Windows NT?

52

There was x86 emulation on Windows NT, on MIPS, Alpha, and PowerPC — in fact, more than x86 emulation, PC emulation.

The Alpha release of Windows NT was quite famous at the time for using a binary translator rather than a “plain” emulator, FX!32; it would run x86 programs, keeping track of which parts of the binaries were actually used, and then translate them to Alpha instructions and store them in DLLs which were used the next time the programs were run. FX!32 was described in a fair amount of detail in various publications at the time, see this USENIX paper and this Digital Technical Journal article.

On MIPS and PowerPC (and Alpha for DOS x86 programs), NTVDM.EXE could emulate a PC as well, using a version of Insignia’s SoftPC (which was common on workstations at the time). This post on Virtually Fun looks at the MIPS version specifically.

The scope of these tools is different: FX!32 translates Win32-on-x86 to Win32-on-Alpha, whereas SoftPC emulates a complete 486-level PC. (Even though Alpha was always 64-bit, publicly-available versions of Windows NT were 32-bit only.)

11
  • 3
    After Intel bought the Alpha technology, FX!32 became the basis for the x86 emulation for IA-64, I believe. Interestingly, around the same time, Alpha technology showed up in both major vendors's products: AMD's new frontside bus at that time was based on the FSB of the canceled EV8. – Jörg W Mittag Jan 26 '19 at 15:39
  • 2
    The comment about the alpha doing binary translation is not strictly true, unusually for a CPU, the alpha allowed the OS to load different microcode, and, at least some, of the x86 emulation was done in the CPU itself using this technique. The contemporaneous linux kernels have the gory details, if you're interested. Better still the Alpha boot rom (like the BIOS) could also use this feature so regular x86 option roms (like SCSI controllers, and video bioses) worked on an Alpha systems. – james Jan 26 '19 at 20:24
  • 1
    @james are you referring to PALcode by any chance? As I understand it (and the last time I talked to an Alpha designer about this was twenty-odd years ago, so I might be wrong), PALcode is used to handle system initialisation, context switching, interrupt dispatching, cache management etc.; while it can take care of some instruction emulation, that’s intended for the optional instructions in the Alpha architecture, not for emulating a different architecture altogether. – Stephen Kitt Jan 27 '19 at 15:45
  • 3
    Just for what it's worth, FX!32 was effective enough that for a while, the fastest way to run some x86 Windows programs was under NT 4 on an Alpha (assisted, of course, by the Alpha's much higher clock speed). – Jerry Coffin Mar 23 '19 at 17:19
  • 2
    Just wanted to make it clear that Windows NT itself ran natively on all platforms - including Alpha. And there were complete native toolchains for C/C++ so that applications could run natively too. Emulation was for the very very real problem that nobody actually had applications that ran natively - expecially not the commercial enterprise applications that the companies that were going to be buying Alphas and so on relied on. – davidbak Nov 30 '20 at 16:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.