FPU et Vc++

Résolu
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 21 mars 2005 à 19:32
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 22 mars 2005 à 17:35
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 mars 2005 à 23:17
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++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 mars 2005 à 12:27
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++
3
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
22 mars 2005 à 06:49
Et puis le FSTP => en FIST et c'est fini ;)

Merci beaucoup Brunews.

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


Merci beaucoup.

+2(p - n)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 mars 2005 à 17:25
Je te send un chm que j'ai fait en french sur la fpu.

ciao...
BruNews, MVP VC++
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
22 mars 2005 à 17:35
Tu me l'as deja envoyé, version du 19/04/2003.

+2(p - n)
0
Rejoignez-nous