FPU et Vc++ [Résolu]

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
- - Dernière réponse : 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)
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
3
Merci
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++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
3
Merci
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++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BruNews
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
1
0
Merci
Et puis le FSTP => en FIST et c'est fini ;)

Merci beaucoup Brunews.

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


Merci beaucoup.

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

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

+2(p - n)
Commenter la réponse de cs_AlexMAN