Pour discuter de l'assembleur
-
SPH
- Messages : 4944
- Inscription : mer. 09/nov./2005 9:53
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

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