[C] sortir une var des registres (ou la faire tomber à 32/64 bits..)

sortir une var des registres (ou la faire tomber à 32/64 bits..) [C] - Programmation

Marsh Posté le 05-11-2001 à 11:12:05    

bonjour.
 
Le problème : je fais des calculs sur une variable, le proco la met dans un de ses registres (logique) à 80 (ou je sais pu combien) bits et calcule dessus. Le problème c que je suis plus précis que la réprésentation mémoire qu'aura cette var quand elle y retournera. donc est-ce qu'en cours de calcul je peux dire au proco de la "flusher" en mémoire ? ou alors de descendre sa précision à la précision mémoire (32 ou 64 bits)

Reply

Marsh Posté le 05-11-2001 à 11:12:05   

Reply

Marsh Posté le 05-11-2001 à 13:46:55    

minusplus a écrit a écrit :

bonjour.
 
Le problème : je fais des calculs sur une variable, le proco la met dans un de ses registres (logique) à 80 (ou je sais pu combien) bits et calcule dessus. Le problème c que je suis plus précis que la réprésentation mémoire qu'aura cette var quand elle y retournera. donc est-ce qu'en cours de calcul je peux dire au proco de la "flusher" en mémoire ? ou alors de descendre sa précision à la précision mémoire (32 ou 64 bits)  




 
C'est pas très clair ce que tu dis ...
80 bits ? c'est un flottant de très haute précision, tu peux pas les utiliser directement avec un compilateur C classique.
Sinon tu peux caster avec (float) ou (double).

Reply

Marsh Posté le 05-11-2001 à 13:53:07    

Stef.D a écrit a écrit :

 
 
C'est pas très clair ce que tu dis ...
80 bits ? c'est un flottant de très haute précision, tu peux pas les utiliser directement avec un compilateur C classique.
Sinon tu peux caster avec (float) ou (double).  




80 bits c'est la tailles des registres d'un 387....
generalement les compilo C ont un type long double qui correspond a cela... sur PC bien sur...

Reply

Marsh Posté le 05-11-2001 à 14:04:35    

BENB a écrit a écrit :

   
80 bits c'est la tailles des registres d'un 387....  
generalement les compilo C ont un type long double qui correspond a cela... sur PC bien sur...  




 
je sais mais moi je veux effectuer un calcul particulier en 32 ou 64 bits (moins précis). pour ça j'avais pensé faire transférer au compilo les vars dans la mémoire entre deux pas de calcul par exemple. est-ce qu'avec des pointeurs c'est possible ?

Reply

Marsh Posté le 05-11-2001 à 18:12:44    

la précision interne du fpu est configurée par son registre de controle. il n'y a -pas- de manière standard en C/C++ pour switcher la précision interne...
 
tu doit attaquer la config du fpu en asm. (ou ptet des paramètres du compilo....)
 
il serait -sucidaire- au nivo perfo de stoquer de manière intermédaire le résultat dans un float/double (alloué par un pointeur, sinon le compilo utilisera un registre, on giclera carrément la ligne si c'est inutile).
 
qu'est tu veux gagner du temps (en baissant la précision interne) ou simuler un perte de qualité ?
 
de plus je ne sais po, et ne pense pas que les runtime des compilos mettent le fpu en 80 bits. (du moins 81 avec le J :??: sais plus)
 
donc attrape la doc de ton compilo, ptet un #pragma existe mais j'en doute.

Reply

Marsh Posté le 08-11-2001 à 16:23:46    

je m'en fous que ça prenne du temps, c pour faire un calcul de précision d'un algo (enfin d'un calcul quoi) je le fais une fois et basta. le truc c que je vois pas comment forcer le compilo à remettre les vars en mémoire quand je veux. même sans optimisation, comme tu dis, le compilo va me virer la ligne...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed