3

Why can't a 64-bit OS run on a 32-bit CPU, but a 32-bit OS works on a 64 bit CPU?

3
  • 9
    Why can't you run software for CPU type "A" on a CPU of type "B"? Because A != B. Feb 4, 2010 at 20:08
  • 1
    simple answer: Because it is a PITA. :)
    – Tony
    Feb 5, 2010 at 4:05
  • 2
    Of course you can, all you have to do is remove the 32-bit CPU and put a 64-bit CPU in.
    – Hello71
    Aug 19, 2010 at 23:08

6 Answers 6

21

I'm assuming we're talking about standard PCs here.

Most 64-bit processors - especially the ones from Intel and AMD - have the full 32-bit instruction set as well as the 64-bit extensions, so they can run 32-bit software.

32-bit processers don't have a 64-bit instruction set though. Many were made even before the 64-bit instruction set was defined, so it's not possible they could implement it correctly, even emulated. They just don't understand that language.

1
  • It all at the base level comes down to registers. 64 bit processors can move stuff 64 bits at a time. 32 bit processors don't have 64 bit registers. Dec 26, 2011 at 21:38
10

64 bit CPUs support any word length up to 64 bits, so in theory, any 8, 16, 32 or 64 bit OS will run on them. 32 bit CPUs don't support 64 bit word length, so only <=32 bit software (including 32 bit OSs) can be run on them.

2
  • +1: IMO, the only 'right' answer in this bunch. :) Feb 4, 2010 at 22:35
  • 1
    Actually, this answer is at least somehow wrong on several levels. The main way that it's wrong is this -- typical 32-bit CPUs operate on 64-bit words just fine. The original Pentium 4 had plenty of instructions that operate on 64-bit words. It has little to do with the word length and everything to do with the instruction set. Feb 23, 2017 at 20:01
5

Why can't you run Windows on your old Atari? Incompatible hardware and processors.

x86-64 should be considered completely different from x86 because it is vastly different from the kernel and machine code point of view. The only thing they really share in common is the bootstrapping code(from the 16bit startup, to get to 64bit you must [usually] go to 32bit first) and the 32-bit compatability mode and the common CPU extensions like SSE. Other than that, the processors are really completely different as to how applications are made in machine code.

3
  • You're vastly overstating the case here. At least 99% of the source code in Windows, not excepting the kernel mode components, is the same between the x86, x64, ia64, and ARM. And even in an x64 program, the x64 architecture is largely a superset of x86. e.g. if you want to copy EAX to EBX, that's MOV EBX EAX in both x86 and x64; even the machine coding of that instruction is the same between those two. Dec 21, 2014 at 23:22
  • @JamieHanrahan maybe, except for stuff like PIC, anything involving pointers, etc etc... you can't compile a program for x86 and it's binary "just work" for x64, even if the machine code itself is similar, there are semantic differences
    – Earlz
    Dec 22, 2014 at 15:56
  • Actually, yes, you can do exactly that. You do that every time you run a 32-bit program on 64-bit Windows. Feb 23, 2017 at 19:18
2

Its because the processor in the case of a 32bit machine cant handle 64bit processing, but a 64bit processor is more than capable of handling 32bits as it can deal with 64bits at a time.

2

A 64bit OS is programmed with 64bit registers in mind. A 32bit CPU only has 32bit registers.

There are lots of other reasons for this as well, besides just registers.

2

A 64 bit OS relies on processor features of a 64 bit processor.

You can't tell a 32 bit process to perform an operation on the 64 bit register if it doesn't exist.

Whereas 64 bit processors have everything the 32 bit one has, so it can be done.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .