Why can't a 64-bit OS run on a 32-bit CPU, but a 32-bit OS works on a 64 bit CPU?
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.
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.
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.
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.
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.
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.