New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Question: Have you taken a look at HQEMU? #95
Comments
See discussions at |
Interesting read. In the meantime I have been able to rebase HQEMU's LLVM patches onto more recent LLVM versions with some manual intervention. When it comes to HQEMU's additions and modifications to QEMU, it is probably easier to manually reapply them to a new QEMU. |
Could you please try to apply the qemu changes onto our qemu? |
I can try, but it's going to take a while. |
One conceptual problem with optimizing the generated ARM code is exception handling: It is difficult to impossible to merge two x86 instructions into one ARM instruction (or any other less-than-1:1 matching). If there's an exception in an ARM instruction that doesn't clearly match an x86 instruction qemu can't properly report the exception location. I don't know if HQEMU attempts to do a n:m optimization or if it attempts to do anything about signal handling in this case. |
I somehow doubt that LLVM's optimizer is going to pay any attention to that. |
This could be highly problematic. A strong driving force behind WINE these days seems to be VALVe's Proton fork and it's use in gaming on Linux, which has been quite technically successful. The games on their Steam platform were produced by varoius publishers for windows, often several years ago. Many of them contain a large number of DRM measures over which VALVe has no control. If the emulation of x86 isn't accurate enough, particularly against anti-debugger code, then it would block the emulation of these games on non-x86 platforms. I could see VALVe wanting to pursue this in the future (they have supposedly been working on a Nintendo Switch competitor, but have been forced to use a less power-efficient x86 mobile chip from AMD instead of an ARM chip from NVIDIA) so some future way of mitigating this is probably worth consideration. Perhaps in the future regular checkpointing could be employed and more instruction-accurate emulation selected to roll forwards in the event of a (rare) exception? |
Given that Hangover's performance is reportedly mostly limited by QEMU, I would like to ask whether you have heard of HQEMU.
To quote from HQEMU's webpage:
I have not had a chance to try it out myself but the description sounds promising.
The text was updated successfully, but these errors were encountered: