CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C/asm inline] effet de bord avec le FPU

dnob700
dnob700
Niveau 10
09 mai 2005 à 23:26:15

j´ai posé cette question sur cdj, mais j´ai pas eu de réponse. je sais pas si c´est passé inapercu ou si personne ne sait.

une petite questoin d´effet de bord :

Ma librairie, fournie des fonctions mathématiques simple mais imprécise ( et puis lente). Ce qui fait qu´ailleurs dans le code quand j´ai besoin de fonction du style sqrt ou cosinus j´utilise math.h.

Mais je me suis dit que réécrire ces fonction est très simple avec le FPU, juste quelques lignes d´assembleur et c´est fait.

Bon, mon problème c´est si je charge un nombre dans la pile du FPU je la modifie, je risque peut-être d´en faire sortir quelque chose qui y était.
Est-ce qu´il faut donc je sauvegarde avant la pile et que je la restore après ( c´est long), où alors le compilo qui utilisera ma lib ( VC ou mingw pour information) vera que je modifie le pile et fera gaffe à ça tout seul ?

sachant qu´à la fin je remet la pile dans son état initial sauf si j´ai fait sortir des éléments par le " haut" de la pile.

En peu après et quelques tests plus tard . ..

j´ai regardé comment c´était écrit dans math.h ( enfin dans la lib qu´il utilise) et j´ai pas tout a fait compris ( j´ai regardé pour la fonction fmod) : apparement il ne sauvegarde pas le registre FPU ( il fait même plutot peu d´opération dessus ( mais quelques une qui donne l´impression d´être inutle ( il charge les opérande dans le mauvais sens alors ensuite il les inverse).

Par contre et il fait des dizaines d´opération que je n´ai pas suivit en modifiant tout un tas de valeurs un peu partout.

Je veux dire, est ce qu´il y a réellement quelque chose à controler quand on fait ce genre d´opération ou passer les bon arguments suffit.

Pour information je vous mets la fonction que j´utilise pour fmod :

double fmod(double x, double y)
{
__asm
{
FLD y;
FLD x;
FPREM; ST(0)=ST(0) mod ST(1)
FSTP x;
FFREE ST(0);
FINCSTP;
}
return x;
}

bon si quelqu´un a une réponse pour l´une de ces questions, ou une idée ou une piste...
Merci beaucoup d´avance.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment