Originally posted by madamimadam
The answer is no, I believe
It will run because of the fact that the processor is backwards compatible, though
Something worth clarifying in this thread is what exactly is meant by "64-bit clean". I'll give you my definition and then my understanding of what may or may not meet this definition. Others may disagree, but at least it will be possible to be more precise about the disagreement (which might appear a little revolutionary to some

)
First, forget about binaries, object code, compiled code, assembler, etc, for a minute and consider just source code. At this level, the question is really:
Can the size of an address (pointer type, or void* in C) as implemented by the compiler be changed from 32 bits to 64 bits, the source code recompiled and it still continue to behave as expected?
As far as I can tell, either xnu is already in such a state or a small number of updates to some key header files will achieve this. There may be some minor changes deep down in the kernel where the actual memory management takes place, but this is only an issue for Apple and everyone else can forget about having to do anything here - similar changes are often required whatever new CPU is to be supported.
Then there is the question of the applications and core libraries (Core Foundation, Cocoa, etc). These
appear to use a suitable level of abstraction such that, with any necessary system header file changes (again, something Apple would do once), it is possible to write 64 bit clean code. This doesn't guarantee that any individual programmer has actually done their job to a sensible quality level, but at least the ability to do so is not hindered by the environment.
So next we should ask whether all of the Mac OS X applications, etc, from Apple actually are 64 bit clean. Unfortunately,
we simply don't have enough information to answer this without actually trying it. There is good reason to expect 64 bit cleanliness to apply, but it only takes 1 mistake in 10s of millions of lines of code to make this assumption false. So the best we can really say here is
probably.
What about third party applications? Again, the best answer we can give is also probably, although it is likely that the probablity is lower. This is based on the guess that Apple have known about potential moves to 64 bits for longer and have had more incentive to go the extra mile to ensure 64 bit clean code.
To finish off, let's return to 64 bit clean and object code. There is no really use definition here of what 64 bit clean might mean - in that the size of memory pointers was committed to at compilation time and hence it's too late to change things. So the issue that's relevant here is whether 32 bit clean applications can be run on a 64 bit processor with a 64 bit clean OS and applications
without translation. Again, we don't have definitive information. It is reasonable to guess that they will work though. In order for them to work, the processor need to support both 32 bit and 64 bit variants of any instruction whose data size varies - this mainly being pointer/memory operations. That this can be done has been illustrated for many years by the Sparc family (as pointed out in a recent post somewhere near this thread), and also as intended to be the case with AMD's Clawhammer (or whatever its called). There is every indication that IBM (let's assume its IBM supplying us with a design for a 64 bit PPC processor for now) is both aware of the sense producing such a design, capable of producing such a design and having the intention of producing such a design. So it is
probable that 32 bit applications will run without translation (and hence run at "native speed") on a 64 bit PPC.
<diatribe end=true>
Does this help anyone?