Elevator: Static x86-64 to AArch64 Binary Translation Without Heuristics
Original source
Deterministic Fully-Static Whole-Binary Translation Without Heuristics
Hacker News →Researchers have introduced Elevator, a binary translator that converts complete x86-64 executables to AArch64 entirely ahead of time, without requiring source code, debug symbols, or assumptions about how code and data are arranged in the binary. The system sidesteps the classic code-versus-data disambiguation problem by refusing to guess: it generates translations for every feasible interpretation of every byte, treating each as potentially data, an opcode, or an opcode argument, and prunes only paths that lead to abnormal termination.
The translator is built around composable code tiles automatically derived from a formal description of the source ISA, which keeps the framework relatively lean. Because translation is fully static and deterministic, the output binary contains no runtime translation component in the trusted code base. That property is the point: the artifact that ships is exactly the artifact that executes, making it amenable to testing, formal validation, certification, and code signing in ways that JIT-based emulators like QEMU are not.
The tradeoff is significant code size expansion from materializing every viable interpretation. Despite that, evaluation against real binaries including the full SPECint 2006 suite shows Elevator matching or beating QEMU user-mode emulation on performance, suggesting static whole-binary translation is more practical than the field had assumed.
Read the full article
Continue reading at Hacker News →This is an AI-generated summary. Read the original for the full story.