Rosetta 2 includes both ahead-of-time translation and run-time emulation. It can run x64 jit software for example.
The jit is run-time translation still - not run-time emulation.
Can you provide a definition that specifies the difference? The end result is identical: being able to run software compiled for foreign ISA.
It doesn't emulate a whole CPU and has the simulated CPU run the code.
It translates instructions directly to the different ISA.
That is literally how performant emulators work.
At that level though, emulation/translation/simulation is blurred.
Somewhat, they're really not exclusive. You could say Rosetta is an x86 emulator that uses AOT binary translation and JIT compilation.
So why does Microsoft go the translation route instead of emulation?
Rosetta 2 is running on an Apple chip which they’ve designed to have an X86 strong memory model mode. Microsoft has to run on off the shelf ARMv8 chips.