About

HQEMU is a retargetable and multi-threaded dynamic binary translator on multicores. It integrates QEMU and LLVM as its building blocks. The translator in the enhanced QEMU acts as a fast translator with low translation overhead. The optimization-intensive LLVM optimizer running on separate threads dynamically improves code for higher performance. With the hybrid QEMU+LLVM approach, HQEMU can achieve low translation overhead and good translated code quality.

HQEMU supports process-level emulation and full-system virtualization. It provides translation modes of running the QEMU translator and LLVM optimizer in one process, or running the LLVM optimizer as a stand-alone optimization server (version 0.13.0).

Publications

  • Sheng-Yu Fu, Ding-Yong Hong, Jan-Jan Wu, Pangfeng Liu and Wei-Chung Hsu. "SIMD Code Translation in an Enhanced HQEMU." IEEE International Conference on Parallel and Distributed Systems, Melbourne, Australia, December 2015. paper
  • Chun-Chen Hsu, Ding-Yong Hong, Wei-Chung Hsu, Pangfeng Liu and Jan-Jan Wu. "A Dynamic Binary Translation System in a Client/Server Environment." Journal of Systems Architecture, volume 61, issue 7, pages 307-319, August 2015. paper
  • Ding-Yong Hong, Jan-Jan Wu, Pen-Chung Yew, Wei-Chung Hsu, Chun-Chen Hsu, Pangfeng Liu, Chien-Min Wang and Yeh-Ching Chung. "Efficient and Retargetable Dynamic Binary Translation on Multicores." IEEE Transactions on Parallel and Distributed Systems, volume 25, issue 3, pages 622-632, March 2014. paper
  • Ding-Yong Hong, Chun-Chen Hsu, Pen-Chung Yew, Jan-Jan Wu, Wei-Chung Hsu, Yeh-Ching Chung, Pangfeng Liu and Chien-Min Wang. "HQEMU: A Multi-Threaded and Retargetable Dynamic Binary Translator on Multicores." IEEE/ACM International Symposium on Code Generation and Optimization, San Jose, CA, March 2012. paper slides demo
Download

  • Process-level emulation and full-system virtualization.
    Guest ISA: x86, x86-64, arm, aarch64
    Host ISA: x86, x86-64, aarch64, ppc64le
  • Process-level emulation and full-system virtualization.
    Guest ISA: x86, x86-64, arm, aarch64
    Host ISA: x86, x86-64
  • Process-level emulation and full-system virtualization.
    Guest ISA: x86, x86-64, arm, aarch64
    Host ISA: x86, x86-64
  • Process-level emulation only.
    Client/server model is only supported in this version.

    Guest ISA: x86, x86-64, arm, armeb, alpha, microblaze, mips, mipsel, ppc, sh4, sh4eb, sparc
    Host ISA: x86, x86-64, arm, ppc64

Computer System Laboratory