Sujet : mon compilo a un bleme ou chuis ouf? |
chrisbk |
Plop, code generé par visual :
Citation :
21: double a,b;
22: float c,d;
23:
24: a = a/b;
0040141E DD 45 F8 fld qword ptr [ebp-8]
00401421 DC 75 F0 fdiv qword ptr [ebp-10h]
00401424 DD 5D F8 fstp qword ptr [ebp-8]
25: c = c/d;
00401427 D9 45 EC fld dword ptr [ebp-14h]
0040142A D8 75 E8 fdiv dword ptr [ebp-18h]
0040142D D9 5D EC fstp dword ptr [ebp-14h]
|
et quand on sait que :
Citation :
The fld instruction loads a 32 bit, 64 bit, or 80 bit floating point value onto the stack. This instruction converts 32 and 64 bit operand to an 80 bit extended precision value before pushing the value onto the floating point stack.
|
Alors finalement on s'interroge sur la norme (du moins pour x87) :D (vu que finalement le compilo n'a que peu a dire sur le déroulement de l'affaire, quoiqu'il fasse le calcul est fait en 80bits, juste a la sortie que ca change, et la, faut bien qu'il se plie au volonté de l'utilisateur (ici mettre le res dans un float) |