Binary Translation Research

Program-Transformation.Org: The Program Transformation Wiki
While concentrating on research, this is also a miscellaneous page.

  • The novel Low Level Virtual Machine (LLVM) is a product of the Lifelong Code Optimization Project, led by Vikram Adve in the Department of Computer Science at the University of Illinois, Urbana-Champaign. LLVM is (1) a compilation strategy, (2) a virtual instruction set and (3) a compiler infrastructure.

  • Reuben Thomas has written an open source Virtual Machine called Mite which is designed for easy JIT translation.

  • Dixie from Universitat Politecnic de Catalynya uses a machine independent Virtual Machine.

  • SimOS, the complete machine simulator. The Embra subsystem uses dynamic binary translation to perform simulations. Slowdowns of only 3-9 are claimed.

  • The Diamonds Project. This project is part of the Open Microprocessor Initiative in the Fourth EU Framework Programme for Research and Technological Development. The goal of Diamonds was to design a new 8/16-bit RISC microcontroller providing CISC software compatibility.

  • Etch Instrumentation and Optimization of Windows 32-bit x86 Executables.

  • TIBBIT Timing Insensitive Binary to Binary Translation.

  • Walkabout. This is a dynamic version of UQBT, i.e. it is a dynamic Binary Translator. The dynamic parts were developed at Sun Microsystems. The source code for Walkabout has been released under a BSD-like license. In fact, UQBT is released as part of Walkabout now.

  • Lucent Technologies' FlashPort multi-platform translation services.

  • Executor Macintosh emulator for DOS, WIndows, OS/2, Linus and NextStep.

  • wxWindows is a free C++ multiplatform GUI toolkit.

  • The Wine Project is a cleanroom implementation of the Win32 and Windows 3.1 APIs, using X and Linux for the core operating system functionality. There is no translation here; Wine only works on an X86 machine running Linux. In a sense it's complementary to binary translation; binary translation emulates the processor, but something like Wine emulates the operating system.

  • QEMU is a FAST! processor emulator using dynamic translation to achieve good emulation speed.

  • PearColator is a dynamic binary translator; providing "optimizing compiler fast PowerPC emulation, using the Jikes RVM as a dynamic binary translator (DBT)". Remarkably, it is written in Java, and runs under the JVM (not natively compiled). Still under development but already runs a number of applications.

  • PearPC is an architecture-independent PowerPC platform emulator capable of running most PowerPC operating systems. Runs on little endian (e.g. Pentium) Linux and Win32 platforms.