FPU et Vc++ [Résolu]

Signaler
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Bonsoir,

J'aurais aimé savoir s'il etait possible de visionner le contenu des registres FPU sous VC++, parce que c'est assez embetant de ne pas voir ce qui s'y trouve..
Et par la meme occasion, j'aurais aimé savoir pourquoi cette fonction deconne :


//Calcul puissance d'un nombre avec FPU (pour conserver les registres eax etc...)


//Resultat renvoyé dans ST(0).


__declspec(
naked)
void __stdcall Puiss(
__int64 n,
int exp)
{

__asm {
mov eax, [esp + 12]
//eax == exp
fld qword ptr[esp + 4]
//empile n, ST(1) == n
dec eax
jle Fin
fld ST
//empile n, ST(0) == n, Contiendra le resultat
Deb:

fmul ST, ST(1)
dec eax
test eax, eax
jne Deb
Fin:
ret 12

}
}

ST contient toujours 0 a la sortie. J'ai simplement changé la taille de n (32 => 64) et voila ce qui se passe, si quelqu'un a une explication, merci ;)
Et au fait, Brunews, la derniere fois tu as dit que c'etait normal que la fonction FPU soit plus lente que la fonction avec les registres generaux, la FPU ne sert elle pourtant pas a faire des calculs plus rapides ?

Merci d'avance.

+2(p - n)

6 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
fld qword ptr[esp + 4] //empile n, ST(1) == n

NENNI, c'est fild avec un i car c'est un entier à convertir.

La FPU sert (ou servait, now y a SSE) à faire calculs en virgule flottante mais c'est plus long en chargement et conversion que de travailler sur les registres généraux avec des entiers.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
N'oublie pas de laisser la stack fpu dans l'état où tu la trouves, faut dépiler ce que tu mets alors FISTP au besoin.

ciao...
BruNews, MVP VC++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Et puis le FSTP => en FIST et c'est fini ;)

Merci beaucoup Brunews.

+2(p - n)
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Ok d'accord, je ne comprenais justement pas la difference entre les instructions avec 'P' et sans.


Merci beaucoup.

+2(p - n)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Je te send un chm que j'ai fait en french sur la fpu.

ciao...
BruNews, MVP VC++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Tu me l'as deja envoyé, version du 19/04/2003.

+2(p - n)