Elevator is a new binary translator that statically converts entire x86-64 executables to AArch64 without requiring debug information, source code, or assumptions about code layout. Unlike existing systems that rely on heuristics or runtime fallbacks, Elevator considers all possible byte interpretations ahead of time and generates separate control flow paths for each feasible one, pruning only those leading to abnormal termination. Translations are composed from code 'tiles' derived from a high-level ISA description, producing complete, self-contained binaries with no runtime component in the trusted code base. The main tradeoff is significant code size expansion, but the key benefit is that the output is the exact code that will run, enabling pre-deployment testing, validation, certification, and cryptographic signing. Evaluated on SPECint 2006 and other real-world binaries, Elevator achieves performance on par with or better than QEMU's user-mode JIT emulation.

2m read timeFrom arxiv.org
Post cover image

Sort: