Why can't Windows 7 be installed on a ARM processor based system?

Solution 1:

For binaries to run on an ARM processor, they have to be compiled for that processor specifically or be run in an emulator.

Since Linux systems are open source, people can compile them specifically for ARM systems and rewrite any x86 specific code. Because the source for Windows is closed, unless Microsoft releases an ARM version, it cannot be recompiled and run on it.

There are other problems with moving to ARM systems, but this is probably the biggest.

As far as I know, VMware will not emulate an x86. I think qemu may be able to, but I have not used it for ARM emulating x86 before, just x86 emulating ARM. There will be a significant performance hit if it does work.

While any program needs to be compiled for the architecture it is intended run on, an operating system often needs to be much more customized to the specific architecture. Operating systems are responsible for things like scheduling and task switching, which work with the processor at very deep levels.

Solution 2:

The simple answer is "MS hasn't released a port" (though Windows 8 is supposed to be ported to ARM), simply cause it made no business sense at the time. If you want to go into, if MS could...

Well, historically, the NT family has run on a range of processors - NT ran on Alpha, PPC and MIPS , and there were planned ports for the Clipper and SPARC architectures. This is possible because Windows NT abstracted the hardware dependant parts of the code (the HAL) and rewriting just that section and recompiling everything else should do the trick (though in theory .NET based software is supposedly hardware independent).

Unlike Linux, which, if i recall correctly has seperate kernel branches for each architecture, supposedly ONLY the HAL is hardware specific, and the rest is common – I believe that once a HAL for the ARM platform in question was created, it should be relatively trivial, and no different from coding for various bits of hardware, especially if the system was otherwise conventional, say, using PCI-E and other industry-standard interfaces.

Assuming Microsoft released a ARM port of Windows 7, any software that isn't interpreted, or running on a VM of sorts like JVM, LLVM or CLR would need to be recompiled or run on a translation layer, like Rosetta or the old 68K compatability layer on older macs, that's aware of x86 specific code (and runs that in emulation transparently), and there's sufficient processor power for translation.

Solution 3:

You cannot run binaries on processors which are a different architecture than the architecture the binaries where compiled to.

You cannot run a AMD64 Linux on ARM, just as you cannot run AMD64 linux on an i386 (32-bit) processor. Your only options are to emulate a whole processor (see qemu) and then try your best.

VMware / VirtualBox are not processor emulators, thus you are out of luck there as well.