Rosetta inside - PPC Classic Mode
Sorry for the Apple flushing but I think that is overly interesting to a lot of people who donīt believe my claim that the transition will be utterly painful. Rosetta is not the "translating it all" stone that the original has given mankind. Its more a bad hack to ensure that some apps are making it over. Classic environment is what comes close to it but even that seemed to be more backwards compatible then this is. All Applications that require a G4 or G5 (and there are a lot out there) will simply not work with Rosetta on an Macintel box. The kernel extension thing we had in Classic and everyone knows that another ton of apps will be bitten by that. And no code for Altivec - given that Apple almost forced developers to use Altivec there is not much media related applications out there who have not at least a little bit of Alitvec in them.
from Apples universal binary pdf:
page 68:
What Can Be Translated?
Rosetta is designed to translate currently shipping applications that run on a PowerPC with a G3
processor and that are built for Mac OS X.
Rosetta does not run the following:
- Applications built for Mac OS 8 or 9
- Code written specifically for AltiVec
- Code that inserts preferences in the System Preferences pane
- Applications that require a G4 or G5 processor
- Applications that depend on one or more kernel extensions
- Kernel extensions
- Bundled Java applications or Java applications with JNI libraries that cant be translated
How It Works
When an application launches on a Macintosh using an Intel microprocessor, the kernel detects whether the application has a native binary. If the binary is not native, the kernel launches the binary using Rosetta. If the application is one of those that can be translated, it launches and runs, although not as fast as it would if run as a native binary. Behind the scenes, Rosetta translates and executes the PowerPC binary code.
Rosetta runs in the same thread of control as the application. When Rosetta starts an application, it translates a block of application code and executes that block. As Rosetta encounters a call to a routine that it has not yet translated, it translates the needed routine and continues the execution. The result is a smooth and continual transitioning between translation and execution. In essence, Rosetta and your application work together in a kind of symbiotic relationship. Rosetta optimizes translated code to deliver the best possible performance on the nonnative architecture. It uses a large translation buffer and it caches code for reuse. Code that gets reused repeatedly in your application benefits the most because it needs to be translated only once. The system uses the cached translation, which is faster than translating the code again.
...