On Wed, 18 Apr 2001 20:08:12 +0800, you wrote:
"Rein Klazes" rklazes@xs4all.nl wrote:
[...]
| fldcw -2(%edx)
Load original CW. Now the exception happens, which indicates the PE maskbit is cleared. I don't see how that can be. (you should check that the disassembly in winedbg is the same as this code)
Attached disassembly is almost the same as assember generated by gcc (not counting garbage instead of jump table and fildl (gcc) vs. filds (winedbg))
The 8 instructions or so that I quoted would have been enough. And those instructions seem to be assembled OK. Btw did you ever check the value that was loaded in the CW, so the 16 bit value in -2(%edx) ?
Also I don't understand why winedbg prints dc->xformWorld2Vport.eM11 = 0.0, though is always 1.0 in the log trace (added to X11DRV_PEN_SelectObject right before the GDI_ROUND call). Something wrong, but I don't know how proceed further yet. Any thoughts?
I would trust the trace, more then the debugger. Things can be really tricky though with floating points. The only way to be 100% sure is to to show the actual bit pattern. All zero's is 0.0. Anything else is not, but a printf can still print 0.0. If you manage to find how this eM11 is stored in memory (in winedbg with something like x &(dc->xformWorld2Vport.eM11) then I can tell you if there is something wrong with it.
Rein.