Dynamic binary translation using run-time feedbacks

Dynamic binary translation is the process of translating, modifying and rewriting executable (binary) code from one machine to another at run-time. This process of low-level re-engineering consists of a reverse engineering phase followed by a forward engineering phase.UQDBT, the University of Queensland Dynamic Binary Translator, is a machine-adaptable translator. Adaptability is provided through the specification of properties of machines and their instruction sets, allowing the support of different pairs of source and target machines. Most binary translators are closely bound to a pair of machines, making analyses and code hard to reuse.Like most virtual machines, UQDBT performs generic optimizations that apply to a variety of machines. Frequently executed code is translated to native code by the use of edge weight instrumentation, which makes UQDBT converge more quickly than systems based on instruction speculation.In this paper, we describe the architecture and run-time feedback optimizations performed by the UQDBT system, and provide results obtained in the x86 and SPARC® platforms.

[1]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[2]  Cristina Cifuentes,et al.  SRL-a simple retargetable loader , 1997, Proceedings of Australian Software Engineering Conference ASWEC 97.

[3]  Raymond J. Hookway,et al.  DIGITAL FX!32: Combining Emulation and Binary Translation , 1997, Digit. Tech. J..

[4]  Cristina Cifuentes,et al.  Machine-adaptable dynamic binary translation , 2000 .

[5]  Mendel Rosenblum,et al.  Embra: fast and flexible machine simulation , 1996, SIGMETRICS '96.

[6]  Richard L. Sites,et al.  Binary translation , 1993, CACM.

[7]  Shane Sendall,et al.  Specifying the semantics of machine instructions , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[8]  Ali-Reza Adl-Tabatabai,et al.  Fast, effective code generation in a just-in-time Java compiler , 1998, PLDI.

[9]  David L Weaver,et al.  The SPARC architecture manual : version 9 , 1994 .

[10]  Robert Griesemer,et al.  A Compiler for the Java HotSpotTM Virtual Machine , 2000, The School of Niklaus Wirth.

[11]  Cathy May,et al.  The PowerPC Architecture: A Specification for a New Family of RISC Processors , 1994 .

[12]  Norman Ramsey,et al.  Specifying representations of machine instructions , 1997, TOPL.

[13]  Bich C. Le,et al.  An out-of-order execution technique for runtime binary translators , 1998, ASPLOS VIII.

[14]  Scott Fordin,et al.  Wabi 2 Opening Windows , 1996 .

[15]  Norman Ramsey,et al.  The New Jersey Machine-Code Toolkit , 1995, USENIX.

[16]  David Keppel,et al.  Shade: a fast instruction-set simulator for execution profiling , 1994, SIGMETRICS.

[17]  Cristina Cifuentes,et al.  UQBT: Adaptive Binary Translation at Low Cost , 2000, Computer.

[18]  Dawson R. Engler,et al.  tcc: a system for fast, flexible, and high-level dynamic code generation , 1997, PLDI '97.