Binary Translation Article Index for
Binary
Website Links For
Binary
 

Information About

Binary Translation




There is ''static'' binary translation, where an entire Executable File is translated into an executable of the target architecture. This is very difficult to do correctly, since not all the code can be discovered by the translator. For example, some parts of the executable may be reachable only through Indirect Branch es, whose value is only known at run-time.

Alternatively, ''dynamic'' translation looks at a short sequence of code, typically on the order of a single Basic Block , translates it and caches the resulting sequence. Code is only translated as it is discovered and when possible, branch instructions are made to point to translated code.

Dynamic binary translation differs from simple emulation by eliminating the emulator's main read-decode-execute loop (a major performance bottleneck), paying for this by large overhead during translation time. This overhead is hopefully amortized as translated code sequences are executed multiple times.

More advanced dynamic translators employ aggressively. This technique is reminiscent of a JIT Compiler , and in fact such compilers (e.g. Sun 's HotSpot technology) can be viewed as dynamic translators from a virtual instruction set (the Bytecode ) to a real one.

  • Apple Computer implemented a dynamic translating Emulator for M68K code in their PowerPC line of Macintoshes , 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 PowerPC native O/S was not made until the release of Mac OS X (10.0) in 2001, and within this new O/S the "Classic" runtime environment still offers the emulation capability as of 10.3 (10/2003). Also, the Rosetta emulator included in Mac OS 10.4 x86 edition, which is used to ease the transition from the PPC to x86, is an example of dynamic translation.


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


  • DEC created FX!32 binary translator for converting X86 CPU applications to DEC Alpha applications.


  • In March 2006 Intel had announced plan to support Transitive Binary Translator on their future Itanium and Xeon CPU.




SEE ALSO



EXTERNAL LINKS

  • http://www.transitive.com

  • http://www.serverpipeline.com/181501677 - Future Intel Itanium and Xeon CPU will be designed to support Transitive Binary Translator.

  • http://fabrice.bellard.free.fr/qemu/

  • http://www.itee.uq.edu.au/~csmweb/decompilation/bintrans.html (somewhat dated)

  • http://www.gtoal.com/sbt/ Static Binary Translation HOWTO

  • http://www.itee.uq.edu.au/~cristina/uqbt.html University of Queensland Binary Translator

  • http://www.experimentalstuff.com/Technologies/Walkabout/ Walkabout - Binary Translation research by Sun and University collaborators

  • http://www.binarytranslator.org/ - PearColator binary translator project

  • http://csdl.computer.org/comp/mags/mi/1998/02/m2056abs.htm - FX!32 DEC binary translator from X86 CPU applications to DEC Alpha CPU applications.