In the Intel IA-32 software developer manual. It says that bit 8 & 9 of x87 FPU control word determines the precision of floating-point calculations. The default precision is double extended precision. After the instruction "FINIT" is executed, the precision is set to double-floating. The problem is that, after "FINIT" is executed, x87 FPU use only 64 bit of the 80-bit data registers to calculate. And the FPU can't accept(output) double-extended precision floating value from(to) memory. Is this right?
Asked
Active
Viewed 776 times
1 Answers
2
No, this is not right. The FPU automatically converts from 64-bit to 80-bit when loading from / storing to memory.

Robin Green
- 32,079
- 16
- 104
- 187
-
Thanks. Then what's the purpose of the precision control? It's used to control what? – Gary Yin Dec 22 '13 at 11:15
-
2To control the intermediate precision. This is useful if you want reproducible behaviour. – Robin Green Dec 22 '13 at 11:25
-
1The precision control selects how many digits the FPU internally computes. Lowering precision speeds up FPU computations (or at least used to) and allows you to exactly emulate a 64 bit or 32 bit FPU with the x87 FPU without having to constantly store and reload its registers to get rid of the extra precision bits. – fuz Jul 09 '18 at 10:04