Binary Translator
From SoftPear
The development of a dynamic recompiling binary translator was our very first work. It was driven by the (no longer existing) necessity to translate PowerPC instructions into i386 instructions.
The dynamic recompiling binary translator approach
The idea of this approach is that Darwin/x86 or GNU/Linux will run on the PC, and the Mac OS X user interface, its libraries and all applications running on top of it will run on Darwin or GNU/Linux, using SoftPear's compatibility layer.
This compatibility layer consists of an emulator/dynamic recompiler of user mode PowerPC code and a layer between PowerPC code and native x86 code that handles endianness issues.
The project planning takes place in the Roadmap and a lot of information on binary translation can be found in the Project Log of Michael's Diploma thesis (http://www.softpear.org/down/steil-recompilation.pdf).
Status
Our current implementation makes it possible to run certain console applications of Mac OS X under either Linux or FreeBSD (on i386 machines) or under Mac OS X itself (the latter is very useful for testing). The PearPC generic CPU core works nicely in SoftPear, but more work has to be done regarding the loader, the emulation of the dynamic linker and the library support. Although we found a way to forward calls to Darwin's standard C library to the host's standard C library, we need to find a more generic way for other libraries.
A next step would be to continue the development of our own recompiler core to speed up emulation tremendously.
If you would like to contribute, please read the Development HOWTO or join the mailing lists (http://sourceforge.net/mail/?group_id=81840).
Want to give it a try? Have a look at the Download page.
Please note that there is also a page with frequently asked questions!

