Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2764 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  comment marche le fpu ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment marche le fpu ?

n°362883
Vic le vik​ing
Posté le 16-04-2003 à 10:47:47  profilanswer
 

:hello:
 
toujours dans mon apprentissage de l'assembleur, je souhaiterais avoir une explication sommaire du fonctionnement du fpu, qui a l'air différent du cpu
j'ai cru comprendre notamment que les registres correspondaient à la pile ??
 
je ne trouve aucune doc chez intel (ou j'ai mal cherché).
 
quelqu'un peut m'aider (devinez qui ? ;)) ou me donner un lien vers une doc ?
 
merci :hello:


---------------
Bougredane et bougre d'andouille ne font qu'un !
mood
Publicité
Posté le 16-04-2003 à 10:47:47  profilanswer
 

n°362959
chrisbk
-
Posté le 16-04-2003 à 11:17:13  profilanswer
 

la fpu marche avec une pile
 
tu empile avec fld/fild, tu depile avec fstp/fistp
 
la pile est nomme via st. par exemple, st(0) correspond au dessus de la pile (TOS), st(1) au deuxieme element etc jusqu'a st(7)
 
les operations utilisent toujours le premier element de la pile
exemple :
 
fadd st(1) => st(0) += st(1)
 
pour les operations non commutative, tu dispose des fonctions "R"
exemple :
 
fsub  st(1) => st(0) -= st(1)
fsubr st(1) => st(0) = st(1) - st(0)
 
C'est bien pratique
 
Pour terminer, tu as les fonctions "P" (pop)
par exemple :
 
faddp => tmp = st(0) = st(1), vire st(0) et st(1) de la pile, empile tmp
 
 
exemple culcul :
 
a = b + c -d;
 
fld  c; //empile c
fsub d; //soustrait d au TOS
fadd b  //ajoute b au TOS
fstp a; //stocke le TOS dans a et depile


Message édité par chrisbk le 16-04-2003 à 11:17:36
n°363220
Vic le vik​ing
Posté le 16-04-2003 à 13:47:53  profilanswer
 

merci chrisbk :)
tu aurais pas un lien ou je pourrais télécharger la doc du fpu ? j'ai essayé chez intel, mais y'a que les instructions. je n'ai pas vu de doc qui récapitule des explications comme celles que tu m'as donné par exemple


---------------
Bougredane et bougre d'andouille ne font qu'un !
n°363223
chrisbk
-
Posté le 16-04-2003 à 13:50:01  profilanswer
 

heuh ben fais des recherches google avec les noms d'instructions
(genre faddp st(0) x87) et pis voila.... Sinon, depuis le tpsm cherche voir le site "the art of assembly programming" ou qqchose approchant, tu auras tout ce que tu cherches

n°363253
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-04-2003 à 14:07:16  profilanswer
 

chrisbk a écrit :

"the art of assembly programming"


:jap:
LA reference dans l'apprentissage de l'assembleur !
 
http://cs.smith.edu/~thiebaut/ArtO [...] HEADING3-1


---------------
J'ai un string dans l'array (Paris Hilton)
n°363255
chrisbk
-
Posté le 16-04-2003 à 14:08:52  profilanswer
 

par contre, pourquoi les gifs sont tout explose ? :??:

n°363267
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-04-2003 à 14:17:41  profilanswer
 

chrisbk a écrit :

par contre, pourquoi les gifs sont tout explose ? :??:

ben ouais, je sais pas ce qui se passe :/
mais ça reste un super site :love:


---------------
J'ai un string dans l'array (Paris Hilton)
n°364771
Vic le vik​ing
Posté le 17-04-2003 à 13:45:02  profilanswer
 

ok, c'est un site sympa
j'ai essayé d'adapter la formule de la fractale de mandelbrot, mais j'y arrive pas, je me mélange avec la pile et les registres :sweat:


---------------
Bougredane et bougre d'andouille ne font qu'un !
n°364784
chrisbk
-
Posté le 17-04-2003 à 13:51:19  profilanswer
 

jamais evident au debut, fo perseverer [:spamafote]
A l'usage la FPU est bpc mois chiante a utiliser que l'alu (reg) grace au fonctions R (et aussi parce que les operations mul/div sont pas aussi merdique qu'en entier)

n°364805
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 17-04-2003 à 13:58:15  profilanswer
 

T'as vraiment du mal toi !
 
A chaque itération tu calcules la partie réélle et imaginaire :
 

Code :
  1. zx2 = zx*zx
  2. zy2 = zy*zy
  3. if ((zx2 + zy2) > 4) break;
  4. zy = 2*zx*zy
  5. zx += cx
  6. zy += cy


 
ce qui nous donne en fpu x87 :
 


quatre = 4.0
__asm
{  
   fld quatre      //pile: 4
   fld zy          //pile: zy 4
   fld zx          //pile: zx zy 4
   fmul st,st      //pile: zx*zx zy 4
   fld st(1)       //pile: zy zx*zx zy 4
   fmul st,st      //pile: zy*zy zx*zx zy 4
   fadd st,st1     //pile: zy*zy+zx*zx zx*zx zy 4
   fcomp st(3)     //pile: zx*zx zy 4
   fnstsw ax       //modulo ^2 > 4 ?
   sahf
   etc.....
}


débrouille toi un peu hein, il suffit de s'y mettre !
 
edit: je te conseille quand tu codes avec la FPU de mettre en commentaires le contenu de la pile au fur et à mesure, tu t'y retrouveras beaucoup plus facilement ;)


Message édité par Harkonnen le 17-04-2003 à 13:59:50

---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  comment marche le fpu ?

 

Sujets relatifs
Comment ca marche les include...fflush(stdin) ne marche pas
[PHP] HELP je pete un cable ! select marche + ?Formater un texte en php ? RESOLU ca marche avec le \n
[PHP] include qui marche pas ?PHP + SNMP quelqu'un a deja testé? --> ca marche!
POURQUOI INCLUDE( ) AVEC UNE URL SA MARCHE PAS ??marche pas: comment appel t on une fonction php aprés onclick="
Java.lang.RunTime : marche, mais pas vraiment [résolu] 
Plus de sujets relatifs à : comment marche le fpu ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR