Binary Translation

Program-Transformation.Org: The Program Transformation Wiki

Binary Translation

What is binary translation

Binary tanslation is the process of automatically translating binary object code from one machine Mi to another. The machines are normally different. Binary translation either takes place at software or hardware level.

There are three ways, which binary translation may take place, ranging from the most difficult to more easy translation:

Translation of applications by software:

- If the machines and the operating systems are different. In this case we are interested in both translating the applications from the source machine, but also in trapping or translating the operating system calls from the source machine to the operating system supported on the target machine. Often, the solution to this problem is to have an virtual machine supporting the source machine. No research projects are known at this time.

- If the machines are different, but supports the same operating system. In this case we are interested in translating the applications, like SIND, UBQT, UBDQT and Walkabout frameworks.

Translation of operating systems by software: - If the machines are different and we want the object code for the source machine to run on the target machine. In this case we want to translate object code from the source machine to the target, like LLVA-emu project.

In the latter case, we also meet translation of operating systems by hardware, like DAISY and BOA.

Another area, which is mistakenly supposed to be binary translation is, if the machines are the same and support different operating systems. In this case this is not really binary translation, rather we are interested in trapping operating system calls from the application compiled for the source machine to use the operating system API on the target machine, like Wine on Linux x86 machines.

Why use binary translation

As new and faster processor architectures are becoming available there exists a growing number of appliactions written for old architectures where recompilation are more difficult than translating the object code, due to the lack of source code or difficulties with upgrading the application (Diamond and japanese project).

Another reason to use software binary translation, is the ability to use different machines to support the same operating system. Moreover, it gets more interesting, if the operating system has distributed capabilities, like the older TAOS operating system, which used a virtual instruction set.

The future may hopefully show a hybrid between the LLVA-emu project and or something similar.


The following links are to works directly or indirectly related to binary translation.

CategoryDecompilation CategoryBinaryTranslation