Question de float (BIS apparement)

Pour discuter de l'assembleur
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Question de float (BIS apparement)

Message par SPH »

Bon, ma question est toute bete :

Code : Tout sélectionner

xf.f = 14.222
x.l=0

!mov eax,[v_xf]
!mov [v_x],eax  ;  <== grrrr, raté !!

Debug x
Je cherche l'endroit où se trouve "14" (le nombre entier avant la virgule).
Merci de votre réponse :mad:
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

Message par tonton »

faut une conversion avec une instruction x87 , mais un instruction sse fait l affaire plus simplement et rapidement.

xf.f = 14.222
x.l=0

!cvttss2si eax,[v_xf] ; (conversion du flotant en entier avec troncature des décimales)
!mov [v_x],eax ; <== pas grrrr, réussi !!

Debug x ; 14
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Tres grand merci tonton !
Comme quoi on en apprend tous les jours =) =) =)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

petite procedure ASM pour avoir la valeur absolue :

Code : Tout sélectionner

Procedure.l ABS_Asm(val.l)
  !   mov    eax, dword [p.v_val]
  !   test   eax, $80000000
  !   jz     Exit
  !   neg    eax
  !Exit:
  ProcedureReturn
EndProcedure
Répondre