\

Pushing the limits of RISC-V emulation

22 points - 07/29/2026

Source
  • dmitrygr

    yesterday at 11:51 PM

    At the end it is not emulation but static recompilation (which is, arguably, cooler)

      • throwaway27448

        today at 12:41 AM

        How do you differentiate the two? What is the benefit of such a distinction? Why not use eg threaded emulation vs recompiled emulation?

          • drunken_thor

            today at 1:03 AM

            In my limited understanding, static recompiling is like JIT transpilation from one arch to another where emulation runs each instruction calling behaviour depending on the instruction. As for tradeoffs my knowledge is not wide enough to declare anything certain.

            • dmitrygr

              today at 12:58 AM

              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

                  today at 1:01 AM

                  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.