Assembleur : FSTP

Tout sur les langages de programmation.

Assembleur : FSTP

Messagepar Kaz » 05 Octobre 2014, 14:54

Bonjour à tous.
Je recherche la méthode de conversion d'un float en héxa qui est réalisée lors de l'exécution de la commande FSTP
ex:
FSTP QWORD PTR SS:[ESP]
ST(0) vaut 4.1917000..00e4
et je me retrouve avec la valeur 00 00 00 00 A0 77 E4 40 en mémoire.

Est-ce que quelqu'un pourrait m'expliquer?
Merci par avance.
Kaz
Mega Crackeur !
Mega Crackeur !
 
Messages: 274
Inscription: 22 Mai 2004, 13:45

Re: Assembleur : FSTP

Messagepar etherlord » 06 Octobre 2014, 10:17

Comment tu récupère cette chaîne hexa ?

Les éléments qui peuvent influer :

14.4.4.2 The FST and FSTP Instructions

--------------------------------------------------------------------------------
The fst and fstp instructions copy the value on the top of the floating point register stack to another floating point register or to a 32, 64, or 80 bit memory variable. When copying data to a 32 or 64 bit memory variable, the 80 bit extended precision value on the top of stack is rounded to the smaller format as specified by the rounding control bits in the FPU control register.

The fstp instruction pops the value off the top of stack when moving it to the destination location. It does this by incrementing the top of stack pointer in the status register after accessing the data in st(0). If the destination operand is a floating point register, the FPU stores the value at the specified register number before popping the data off the top of the stack.

Executing an fstp st(0) instruction effectively pops the data off the top of stack with no data transfer. Examples:
fst mem_32
fstp mem_64
fstp mem_64[ebx*8]
fst mem_80
fst st(2)
fstp st(1)

The last example above effectively pops st(1) while leaving st(0) on the top of the stack.

The fst and fstp instructions will set the stack exception bit if a stack underflow occurs (attempting to store a value from an empty register stack). They will set the precision bit if there is a loss of precision during the store operation (this will occur, for example, when storing an 80 bit extended precision value into a 32 or 64 bit memory variable and there are some bits lost during conversion). They will set the underflow exception bit when storing an 80 bit value value into a 32 or 64 bit memory variable, but the value is too small to fit into the destination operand. Likewise, these instructions will set the overflow exception bit if the value on the top of stack is too big to fit into a 32 or 64 bit memory variable. The fst and fstp instructions set the denormalized flag when you try to store a denormalized value into an 80 bit register or variable[7]. They set the invalid operation flag if an invalid operation (such as storing into an empty register) occurs. Finally, these instructions set the C1 condition bit if rounding occurs during the store operation (this only occurs when storing into a 32 or 64 bit memory variable and you have to round the mantissa to fit into the destination).

etherlord
Triumvirat
Triumvirat
 
Messages: 2490
Inscription: 22 Mars 2004, 16:12

Re: Assembleur : FSTP

Messagepar Kaz » 06 Octobre 2014, 17:53

Je récupère cette chaine dans la fenêtre de dump d'olly.
Je retrouve ensuite cette chaine en base de registre pour un contrôle ultérieur.
Je sais à quoi correspond la valeur de st(0), mais je ne comprend pas comment elle est convertie pour être enregistrée en mémoire.
Kaz
Mega Crackeur !
Mega Crackeur !
 
Messages: 274
Inscription: 22 Mai 2004, 13:45

Re: Assembleur : FSTP

Messagepar baboon » 07 Octobre 2014, 08:15

Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3285
Inscription: 08 Juillet 2005, 17:49

Re: Assembleur : FSTP

Messagepar Kaz » 07 Octobre 2014, 18:50

Merci pour le pdf.
Mon anglais étant assez mauvais, je vais regarder ça ce week end à tête très reposée.
Kaz
Mega Crackeur !
Mega Crackeur !
 
Messages: 274
Inscription: 22 Mai 2004, 13:45

Re: Assembleur : FSTP

Messagepar baboon » 08 Octobre 2014, 13:37

Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3285
Inscription: 08 Juillet 2005, 17:49

Re: Assembleur : FSTP

Messagepar Kaz » 08 Octobre 2014, 19:07

Merci baboon, les liens en français sont plus clairs pour moi.
J'ai trouvé deux sites qui permettent ces conversions :
hxxp://www.h-schmidt.net/FloatConverter/IEEE754.html
et
hxxp://www.binaryconvert.com/convert_double.html
Il faut utiliser dans mon cas la version 64 bits.
Merci encore.
Kaz
Mega Crackeur !
Mega Crackeur !
 
Messages: 274
Inscription: 22 Mai 2004, 13:45


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités