Motivation[edit]

Binary translation is motivated by a lack of a binary for a target platform, the lack of source code to compile for the target platform, or otherwise difficulty in compiling the source for the target platform.


Statically-recompiled binaries run potentially faster than their respective emulated binaries, as the emulation overhead is removed. This is similar to the difference in performance between interpreted and compiled programs in general.

implemented a dynamic translating emulator for M68K code in their PowerPC line of Macintoshes,[12] which achieved a very high level of reliability, performance and compatibility (see Mac 68K emulator). This allowed Apple to bring the machines to market with only a partially native operating system, and end users could adopt the new, faster architecture without risking their investment in software. Partly because the emulator was so successful, many parts of the operating system remained emulated. A full transition to a PowerPC native operating system (OS) was not made until the release of Mac OS X (10.0) in 2001. (The Mac OS X "Classic" runtime environment continued to offer this emulation capability on PowerPC Macs until Mac OS X 10.5.)

Apple Computer

for Intel-based Macs introduced the Rosetta dynamic translation layer to ease Apple's transition from PPC-based hardware to x86. Developed for Apple by Transitive Corporation, the Rosetta software is an implementation of Transitive's QuickTransit solution.

Mac OS X 10.4.4

QuickTransit during its product lifespan also provided →x86, x86→PowerPC and MIPSItanium 2 translation support.

SPARC

achieved similar success with its translation tools to help users migrate from the CISC VAX architecture to the Alpha RISC architecture.

DEC

ARIES (Automatic Re-translation and Integrated Environment Simulation) is a software[13] dynamic binary translation system that combines fast code interpretation with two phase dynamic translation to transparently and accurately execute HP 9000 HP-UX applications on HP-UX 11i for HPE Integrity Servers.[14] The ARIES fast interpreter emulates a complete set of non-privileged PA-RISC instructions with no user intervention. During interpretation, it monitors the application's execution pattern and translates only the frequently executed code into native Itanium code at runtime. ARIES implements two phase dynamic translation, a technique in which translated code in first phase collects runtime profile information which is used during second phase translation to further optimize the translated code. ARIES stores the dynamically translated code in memory buffer called code cache. Further references to translated basic blocks execute directly in the code cache and do not require additional interpretation or translation. The targets of translated code blocks are back-patched to ensure execution takes place in code cache most of the time. At the end of the emulation, ARIES discards all the translated code without modifying the original application. The ARIES emulation engine also implements Environment Emulation which emulates an HP 9000 HP-UX application's system calls, signal delivery, exception management, threads management, emulation of HP GDB for debugging, and core file creation for the application.

HP

DEC created the binary translator for converting x86 applications to Alpha applications.[12]

FX!32

' Wabi software included dynamic translation from x86 to SPARC instructions.

Sun Microsystems

In January 2000, Corporation announced a novel processor design named Crusoe.[15][16] From the FAQ[17] on their web site,

The smart microprocessor consists of a hardware VLIW core as its engine and a software layer called Code Morphing software. The Code Morphing software acts as a shell […] morphing or translating x86 instructions to native Crusoe instructions. In addition, the Code Morphing software contains a dynamic compiler and code optimizer […] The result is increased performance at the least amount of power. […] [This] allows Transmeta to evolve the VLIW hardware and Code Morphing software separately without affecting the huge base of software applications.

Transmeta

Corporation developed and implemented an IA-32 Execution Layer - a dynamic binary translator designed to support IA-32 applications on Itanium-based systems, which was included in Microsoft Windows Server for Itanium architecture, as well as in several flavors of Linux, including Red Hat and Suse. It allowed IA-32 applications to run faster than they would using the native IA-32 mode on Itanium processors.

Intel

(an emulator for the GameCube/Wii) performs JIT recompilation of PowerPC code to x86 and AArch64.

Dolphin

supports binary translation for 32-bit guest operating systems.

Microsoft Virtual PC

Binary optimization

Binary recompilation

Dynamic recompilation

Just-in-time compilation

Instruction set simulator

Emulator

Virtual machine

Comparison of platform virtualization software

Shadow memory