On Sun, 3 Nov 2002, Shachar Shemesh wrote: [...]
Does bochs employ JIT compilation? I know that even modest JIT support provides great runtime improvement.
AFAIK (i.e. not much) Boch does not support just-in-time compilation. It would certainly be a nice addition to it but I am told it requires a lot of work.
[...]
I believe you are wrong. Sure, emulation is not as fast as native code, but that's exactly why a merged wine+bochs may be much much faster than installing Windows in a VM.
Here I disagree. If the emulator is fast enough to run the application, then it should be fast enough to run the application plus Wine. Reciprocally, if it is too slow to run Wine, then I think you will find that it is too slow to run your application too.
Even so I think it should be faster than running Windows in an emulator because you will not run two filesystem layers, two graphics engines, and you should be able to dispense with a full virtual machine, i.e. you should not have to set apart memory for the virtual machine which means you share the disk cache, etc.
[...]
What is required in order to do that:
- Winelib must be fully supported on that platform.
- Endianity conversions must be performed on all >1byte values. This
means that the native code must work with structures that are little endian. Personally, I'm not sure why that does not hold true to winelib apps as well. 3. The CPU emulation need to be extracted from your emulator, as that is the only thing necessary for such a setup. There is no need for any kind of hardware emulation, as all hardware access is translated to native OS calls.
There is a lot more: * you must keep track of the status (x86 or PPC) of all callbacks so that you can convert parameters if necessary * you must keep track of the status of all winprocs for the same reason * you must also take care of the alignment issues (in addition to the endianness)
And I am sure there are quite a lot of other issues that may crop up. This is as much work but probably more than supporting the 16/32bit dichotomy, or supporting both Ansi and Unicode functions.
I really think that the rational thing to do is to run Wine inside the emulator (which should work for all Linux x86 applications).