Reply to Message

View discussion in a popup

Replying to:
dempson
Hot Shot
Hot Shot


@VirtualMac2009 wrote:

Thanks for the explanation. What I do not understand is why is it then possible now to run Eudora Mail and Palm Desktop (PowerPC applications) inside a virtualized (not emulation) Mac OS X Server 10.6 (Snow Leopard) in VMware Fusion 11.5.3 in macOS 10.12 Sierra in Intel x86-based Macs.

In other words, that is running PowerPC applications in an Intel Mac using VMware Fusion virtualization (not emulation), thanks to Rosetta 1 (released by Apple in 2006).


Now that we have this thread back, let me try explaining it again.

1. VMware Fusion on macOS Sierra (for example) on an Intel Mac is able to run an Intel virtual machine.

2. Snow Leopard Server (an Intel-only operating system) is running inside the Intel virtual machine. The VM is executing Intel code using the host (Intel) processor, within the context of the virtual machine.

3. Snow Leopard Server includes the Rosetta translation engine. This allows Snow Leopard on an Intel Mac to run PowerPC-only applications like Eudora and Palm Desktop. Rosetta itself is Intel code.

4. The PowerPC instructions in applications like Eudora are being translated to Intel instructions by Rosetta. The Intel processor is then able to execute the translated Intel instructions. In this case, they are being executed on an Intel virtual machine, therefore are being executed by the host Intel processor.

At no point in this sequence is a "PowerPC Mac being virtualised on an Intel Mac". The individual instructions of PowerPC applications are being translated by Rosetta to Intel instructions, which are then executed by an Intel operating system within an Intel VM on a host Intel processor.

Apart from being compiled for the wrong processor, the application needs to be compatible with the OS (Snow Leopard) for Rosetta to work, e.g. you can't run much older PowerPC applications which ran on Mac OS 9 or earlier but were not updated to run natively on Mac OS X.

There is no "emulation" involved in this sequence. Rosetta does "code translation", producing Intel instructions which do the same as original PowerPC instructions. Rosetta is closest in concept to an "interpreter" rather than an "emulator": think of it like reading the PowerPC instructions as a script, then executing the appropriate Intel code to do the requested operations.

Rosetta 1 supports PowerPC instructions which are able to be used by applications (apart from some advanced features like vector instructions). Rosetta 2 does the same thing with Intel instructions.

Rosetta (1 or 2) does not support the full instruction set, in particular it doesn't support the privileged instructions which must be used by an OS. Therefore Rosetta (1 or 2) cannot translate OS-level code, and cannot be used to support running a VM with an OS for a different processor.

Code translation inside the VM (for running applications) is fine. Code translation outside the VM (for running the entire guest OS) is not.

To be able to run Snow Leopard (and therefore PowerPC apps like Eudora) on an Apple Silicon Mac, you would need a full emulator, i.e. VM software with the added features of being able to interpret Intel instructions and emulate Intel processor features required by the guest OS.

Reply
0 Kudos