<span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><div>Fellow developers,</div><div><br></div><div>I&#39;m thinking of starting a VM project to allow running x86 Windows apps on ARM Android. This will obviously involve binary translation. I&#39;ve read about QEMU&#39;s  tiny code generator and think for a usable experience,</div>
<div> 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&#39;s worth to do so, but lots of care will need to be done to only optimize code that needs it like Sun&#39;s HotSpot Java compiler does.</div>
<div><br></div><div>Questions:</div><div><br></div><div>1. How useful would this be and how much interest?</div><div><br></div><div>   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</div>
<div>   running Office, Matlab, Visual C++, etc on ARM, leaving only legacy applications and games to benefit from binary translation. I&#39;m mostly interested in seeing some 3D games run on my</div><div>   Xoom.</div><div>
<br></div><div>2. What&#39;s the best design:  whole system VM (qemu) or process VM (qemu &amp; wine)?</div><div><br></div><div>Process VM:</div><div><br></div><div>+ easier to incorporate 3D acceleration at API level</div>
<div>+ uses less memory</div><div>+ better performance (e.g. no need for MMU translation when accessing memory)</div><div>+ much better integration with host OS</div><div>- needs to maintain custom Windows API implementation (Wine)</div>
<div><br></div><div>Whole system VM:</div><div><br></div><div>+ simpler, more unified to implement</div><div>+ 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)</div>
<div><br></div><div>Given the aims of only running legacy applications and games, it seems a foregone conclusion that Wine&#39;s process VM approach is best. Comments?</div><div><br></div><div><br></div><div>3.  Will Wine ever incorporate binary translation? </div>
<div><br></div><div>   My proposed design will obviously use Wine&#39;s implementation of the Windows API, which is huge. I&#39;m not sure how disruptive of a change binary translation will be to Wine.</div><div> </div><div>
   If Wine does incorporate binary translation, maybe they can change the name to Wine Is Now an Emulator</div><div><br></div><div><br></div><div>If your&#39;re interested in this project, please reply.</div></span>