Originally posted by duby229
View Post
In fact there is a clear difference between Emulator and Compatibility layer. Behaviour is the right word to lead you to the problem. How many test in the wine test suite check timing being how long X feature takes to run under windows the answer is absolutely zero. Wine does not emulate the performance shape of Windows.
So its not true to say that wine does emulate windows behaviour because if a function is faster or slower in wine that is fine because Wine is a compatibility layer if wine was a emulator that would be a bug. That performance difference only comes a bug if it effects a program under wine so far wine has never had a windows program complain that it doing a feature too fast. Yes some things under wine are many times faster than windows. Now in an emulator you have to attempt to match the timings. Compatibility layers are allowed to-do almost everything emulator does but does not have to do everything big thing is not having to care how fast or how slow stuff is unless it effects a program using the compatibility layer adversely.
Reality here is implementing Windows API naively on Linux then wrapping around them is insanely not that workable. Winelib attempts that. Wine has a pe.elf format that contains windows PE information and is in a Linux ELF binary. Windows API uses different memory structures to generic Linux and worse Windows applications at times expect to be able to jump straight to particular addresses and read particular address they never got allocations for. All this stuff make people jump to the wrong idea that wine is a emulator completely missing the timing side that must be done to be a emulator.
So duby229 as normal you are another person claiming wine is a emulator who has his terms wrong. Did not read what an emulator has to-do correctly and failed to understand where the difference is between compatibility layer and emulator.
Wine is not emulator/emulation that is wine first name is a directive to developers to remember wine only has to obey the rules of being a compatibility layer.
Basically you have two ways run non-native stuff emulate or compatibility this becomes Emulator and compatibility layer. It is very important to understand the difference particularly in hardware development where timings could be critical because the compatibility version may have wrong timings by a large margin. Using a compatibility layer when you need a emulator can cause you big trouble because is compatibility not emulation.
Comment