To view parent comment, click here.
To read all comments associated with this story, please click here.
WereCatf,
"So, basically you want Wine with machine-code translation. Too bad that it won't happen without Microsoft's help, as even Wine is still riddled with bugs after all these years."
This kind of project seems right up my alley in terms of my interests and abilities. I think it could be done without the need for "wine" at all as long as the ARM opcodes could implement the same calling conventions which exist on x86.
Most code doesn't self modify, and because of that it is possible to recompile the opcodes from one architecture to another architecture, which isn't far off from what qemu does. Inefficiencies arise because different architectures don't have 1 to 1 correspondence between opcodes, producing overhead. However if this were combined with a good code optimiser (like re-purposing the one in gcc or better yet icc), then you might even end up with emulation that can perform better than the original.
Anyone care to offer me a grant? Since I sure wouldn't have time to work on it unless I could drop my ordinary work and pay a babysitter.
I think you mean most simple applications don't self-modify. Most multimedia-related applications do make use of heavy optimizations where straight-up static translation doesn't work. On a similar note, straight-up translation wouldn't work for 64-bit applications at all.
But sure, I would love to see you prove me wrong, it'd be a very nice tool in the toolbox! Go ahead and explain more in detail of how you'd actually implement such a thing if you feel like it, as off-topic as it may be.
I read about modules for LLVM to do this a while back.
The idea is to use LLVM, read the x86 machine code and "compile" it into the LLVM intermediate representation, then compile that into ARM or PPC or whatever.
Last I heard it worked pretty well on code compiled with GCC or LLVM, much less well on custom machine code, and it had some trouble determining the real byte sizes of some variables.
Still, it'd be a good place to start.
We're already on Win32.
Such a project is just a simple JIT for user mode instructions. Static binary translation works too, since most binaries are static. Intel did this with Android - not a big deal. The most difficult part here is a validation.





Member since:
2006-02-15
There is zero sense in full-system emulator. Full win32 is here already.
So, basically you want Wine with machine-code translation. Too bad that it won't happen without Microsoft's help, as even Wine is still riddled with bugs after all these years.
Snake-oil.