Fellow developers,
I'm thinking of starting a VM project to allow running x86 Windows apps on
ARM Android. This will obviously involve binary translation. I've read about
QEMU's tiny code generator and think for a usable experience,
the intermediate micro-op representation will have to be abandoned, and use
a more efficient, though less portable x86 to ARM translator. I also saw
some Google SOC project that tried to incorporate LLVM into QEMU, but with
disastrous slow down if done naively. I still think it's worth to do so, but
lots of care will need to be done to only optimize code that needs it like
Sun's HotSpot Java compiler does.
Questions:
1. How useful would this be and how much interest?
Obviously, this will be a huge project, and I just want to gauge the
interest before I jump in. Microsoft will be releasing Windows for ARM soon,
so there will be no need to worry about
running Office, Matlab, Visual C++, etc on ARM, leaving only legacy
applications and games to benefit from binary translation. I'm mostly
interested in seeing some 3D games run on my
Xoom.
2. What's the best design: whole system VM (qemu) or process VM (qemu &
wine)?
Process VM:
+ easier to incorporate 3D acceleration at API level
+ uses less memory
+ better performance (e.g. no need for MMU translation when accessing
memory)
+ much better integration with host OS
- needs to maintain custom Windows API implementation (Wine)
Whole system VM:
+ simpler, more unified to implement
+ much better support for apps that are dependent on new, proprietary,
obscure Windows libraries, interfaces (moot because Office, Matlab, etc
will soon be available for ARM)
Given the aims of only running legacy applications and games, it seems a
foregone conclusion that Wine's process VM approach is best. Comments?
3. Will Wine ever incorporate binary translation?
My proposed design will obviously use Wine's implementation of the
Windows API, which is huge. I'm not sure how disruptive of a change binary
translation will be to Wine.
If Wine does incorporate binary translation, maybe they can change the
name to Wine Is Now an Emulator
If your're interested in this project, please reply.