0

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?

Gary Yin
  • 525
  • 6
  • 17

1 Answers1

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
  • 2
    To control the intermediate precision. This is useful if you want reproducible behaviour. – Robin Green Dec 22 '13 at 11:25
  • 1
    The 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