dmurdoch@watstat.waterloo.edu (Duncan Murdoch) (11/26/89)
I was just looking through the floating point code in a Turbo Pascal program, and I see that at one point it sets the precision control bits to 01. My old 8087 manual lists codes 00 - 24 bits 01 - (reserved) 10 - 53 bits 11 - 64 bits Does anyone know what setting it to 01 is supposed to do? Is it something new on the 287, 387 or 486? Duncan Murdoch
chasm@attctc.Dallas.TX.US (Charles Marslett) (11/27/89)
In article <912@maytag.waterloo.edu>, dmurdoch@watstat.waterloo.edu (Duncan Murdoch) writes: > 00 - 24 bits > 01 - (reserved) > 10 - 53 bits > 11 - 64 bits > Does anyone know what setting it to 01 is supposed to do? Is it something new > on the 287, 387 or 486? I think the 387 (and 486) actually lose the ability to calculate in any but the 64 bit mode -- the two bits are just a little bit of RAM. Any one with technical docs handy to check on that? > Duncan Murdoch
dmurdoch@watstat.waterloo.edu (Duncan Murdoch) (11/29/89)
>>In article <912@maytag.waterloo.edu>, dmurdoch@watstat.waterloo.edu (me) >>wrote: >>> 00 - 24 bits >>> 01 - (reserved) >>> 10 - 53 bits >>> 11 - 64 bits >>> Does anyone know what setting it to 01 is supposed to do? Is it something >>new >>> on the 287, 387 or 486? It turns out to be reserved on the 387 and 486 too (thanks to Tom Hill for the info), and on an 8087 acts just the same as 00, i.e. round to single precision. I was asking about it because it occurred in the floating point code that Turbo Pascal 5.5 uses. It turned out to be in a part of some code that rounds two extended operands in registers before a compare, and looks suspiciously as though it is really precision 10 (double) mis-coded. It doesn't seem to matter to TP though, because I can't think of any time it would need to do this operation. Watch out in Turbo C, though. Duncan Murdoch P.S. I've just widened the distribution of this article; don't worry if you didn't see the original or the discussion that followed it.
peter@guardian.UUCP (peter) (12/02/89)
In article <912@maytag.waterloo.edu> dmurdoch@watstat.waterloo.edu (Duncan Murdoch) writes: | |I was just looking through the floating point code in a Turbo Pascal program, |and I see that at one point it sets the precision control bits to 01. My old |8087 manual lists codes | 00 - 24 bits | 01 - (reserved) | 10 - 53 bits | 11 - 64 bits |Does anyone know what setting it to 01 is supposed to do? Is it something new |on the 287, 387 or 486? | |Duncan Murdoch I looked through my collection of reference manuals and they all list 01 as reserved. Here's where I checked: 80286 and 80287 Programmer's Reference Manual, 210498-005 (1987) Figure 1-5, p1-12. (In the second section of the book!) 80387 Programmer's Reference Manual, 231917-001 (1987) Figure 2-3, p2-6. i486(tm) Microprocessor, 240440-001 (1989) Figure 2.14, p33. (bound, 175 page "data sheet") There must be something tricky going on. <disclaimer.std> applies. ------------------------------------------------------------------------------- Peter Plamondon, Intel Corp, 5200 NE Elam Young Pkwy, Hillsboro, OR 97124-6497 Internet: peter@langlab1.hf.intel.com +1 503-696-5219 UUNET : uunet!intelhf!langlab1!peter "I speak for myself, as best I can." UUCP : tektronix!psueea!foobar!langlab1.hf.intel.com!peter -------------------------------------------------------------------------------