comment marche le fpu ?

comment marche le fpu ? - ASM - Programmation

Marsh Posté le 16-04-2003 à 10:47:47    

: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 !
Reply

Marsh Posté le 16-04-2003 à 10:47:47   

Reply

Marsh Posté le 16-04-2003 à 11:17:13    

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
Reply

Marsh Posté le 16-04-2003 à 13:47:53    

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 !
Reply

Marsh Posté le 16-04-2003 à 13:50:01    

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

Reply

Marsh Posté le 16-04-2003 à 14:07:16    

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)
Reply

Marsh Posté le 16-04-2003 à 14:08:52    

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

Reply

Marsh Posté le 16-04-2003 à 14:17:41    

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)
Reply

Marsh Posté le 17-04-2003 à 13:45:02    

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 !
Reply

Marsh Posté le 17-04-2003 à 13:51:19    

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)

Reply

Marsh Posté le 17-04-2003 à 13:58:15    

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)
Reply

Sujets relatifs:

Leave a Replay

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