Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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

share|improve this question

migrated from stackoverflow.com Feb 4 '10 at 20:11

This question came from our site for professional and enthusiast programmers.

7  
Why can't you run software for CPU type "A" on a CPU of type "B"? Because A != B. –  John Saunders Feb 4 '10 at 20:08
1  
simple answer: Because it is a PITA. :) –  Tony Feb 5 '10 at 4:05
1  
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 '10 at 23:08

7 Answers 7

up vote 15 down vote accepted

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.

share|improve this answer
    
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. –  Fiasco Labs Dec 26 '11 at 21:38

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.

share|improve this answer
    
+1: IMO, the only 'right' answer in this bunch. :) –  Ƭᴇcʜιᴇ007 Feb 4 '10 at 22:35

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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

Interestingly, as Mark hinted, you can run 64-bit operating systems as a virtual machine on a 32-bit system using VirtualBox...although I wouldn't recommend it; it would be ridiculously slow.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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