the difference between translation and emulation



If I understand this correctly, Rosetta 2 is a translation layer while something like Dolphin is an emulator. They both allow us to run apps on a platform that wasn’t designed for said apps.

How do they differ? And in terms of performance, is one better than the other?


In: Technology

They are for the most part the same. However, an emulator typically emulates a piece of hardware (like a GameCube or Wii) whereas Rosetta just had to provide an interface to the operating system.

rosetta allows binary translation, meaning that it allows 1-1 functionality between x86 (a complicated instruction set with lots of memory manipulation) and arm (a simple instruction set of which the implementation is easier to make into a low power version); while an emulator would be running and translating system calls as you ran the program. Analogous to AOT and JIT compilation.