Arxiv paper presents Elevator, a static x86-64 to AArch64 binary translator that eliminates heuristics by generating control flow paths for every possible byte interpretation ahead of time.
Key Takeaways
Elevator translates entire x86-64 binaries to AArch64 with no debug info, source code, or code-layout assumptions required.
Instead of heuristics or JIT fallbacks, it enumerates all feasible byte interpretations (data, opcode, opcode argument) and prunes only paths leading to abnormal termination.
Output is a self-contained binary with no runtime component in the trusted code base, enabling cryptographic signing and certification before deployment.
Translations are composed from code “tiles” derived from a high-level ISA description, keeping the framework compact despite the approach’s exhaustiveness.
Principal tradeoff is significant code size expansion; performance on SPECint 2006 matches or exceeds QEMU user-mode JIT emulation.