|
| ▲ | drunken_thor 2 hours ago | parent | next [-] |
| 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. |
| |
| ▲ | throwaway27448 an hour ago | parent [-] | | What is the distinction in your mind? Can recompiling not call each instruction? Can threaded interpretation not perform optimization? |
|
|
| ▲ | dmitrygr 2 hours ago | parent | prev [-] |
| 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 | | |
|
|