Remix.run Logo
dmitrygr 2 hours ago

Emulation visits instructions as they are executed. Static recompilation will (at translation time) visit instructions that can be discovered, even if they never run.

eg:

   if (rand64() == 0x123456789abcdef0ull)
      baz = bar;
an emulator will likely never visit that assignment. A static recompiler will translate it.
throwaway27448 2 hours ago | parent [-]

Hm. What is the utility of this distinction?

Anyway, qemu certainly seems like it would fall under your definition of "emulator" despite obviously dynamically recompiling.

dmitrygr an hour ago | parent [-]

which is why i said "static recompiler" and not just "recompiler"

distinction is that an emulator is much simpler, while a static recompiler is a lot more work and thus ~30% more cool

throwaway27448 an hour ago | parent [-]

Ah. I admit I've only ever made dynamic recompilers