• by tlb on 12/9/2020, 10:48:47 AM

    It works for simple cases. Things that make it complicated are:

    - Only executable code should be translated, data shouldn't be. Sometimes (like with jump tables) they are ambiguous.

    - Different CPUs have different memory consistency models for parallel threads, leading to race conditions when translating

    - Special instruction sets like AVX can be hard to translate

    - Anything with a JIT compiler (including most web browsers) needs special handling.

    That said, qemu works for the great majority of emulated & host CPUs.