Jump to content

Division signé dans les procs (Dsp, Gpu)


GT Turbo

Recommended Posts

Bah non, au pire y'a que le dividende négatif, alors je fais ça:

 

 

 

MACRO	IDIV	a,b

 

abs

 

jr CC,.pos~

 

div a,

 

neg

 

.pos~:

 

ENDM

 

 

 

 

ex pour les polygones pour calcul dx/dy, on s'arrange pour que dy soit positif (cas de l'inversion point haut/point bas du segment)

 

 

 

ou pour la normalistation d'un vecteur, vx=vx/||v|| vy=vy/||v|| vz=vz/||v|| , la norme du vecteur v ||v|| est forcement positive.

 

 

 

J'suis jamais tombé sur un cas positif/negatif

 

 

 

Mais pitet qu'avec un XOR sur le bit de signe, on peut modifier la macros ci-dessus pour changer le signe du quotient seulement si -/+ ou +/-

 

 

 

 

 

GT va nous arranger ça...

Link to comment
Share on other sites

bon, allez, j'my colle:

 

 

 

 

; r0=dividende

 

; r1=diviseur

 

 

 

move r0,r2

 

xor r1,r2

 

abs r0

 

abs r1

 

abs r2 ; bit de poids fort à 1 si une des operande est négative

 

jr CC,.positif

 

div r1,r0

 

neg r0

 

.positif:

 

 

 

 

me semble correct...

Link to comment
Share on other sites

cts :


me semble correct...





Pour ma part aussi, pour ceux qui ont pas encore l'habitude des sauts (Jr, Jump) faut savoir que l'instruction suivante est toujours exécuté quelque soit la condition du saut donc le div est toujours exécuté, le neg r0 ne sera exécuté que que si la condition de saut n'est pas bonne.



GT ;)



P.S. :
GT va nous arranger ça...
Meme pas eu le temps ^_^
Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...