Removing Load/Store Helpers in Dynamic Binary Translation
Résumé
During dynamic binary translation (DBT), guest memory accesses need to be translated from guest virtual memory addresses to virtual host memory addresses, a translation that is time-consuming and greatly impacts the performance of the overall emulation. In this chapter, the authors propose translating a guest load/store instruction into a host load/store instruction, leveraging the host memory management unit (MMU) to perform the address translation at native speed. This requires that the emulator maps the guest virtual address space in a region of its own address space, using a Linux kernel module to control the host MMU translation in that region. The authors give an overview on what is necessary, in a DBT-based emulator, to emulate memory accesses. They describe their prototype based on Linux and QEMU, on x86_64 processors for the host.