totoscill
Messages postés48Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention10 décembre 2009
-
16 déc. 2008 à 19:43
totoscill
Messages postés48Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention10 décembre 2009
-
17 déc. 2008 à 19:13
Bonjour,
Je souhaite tourner les octets de données de type double (probleme de big endian/ little endian).
Pour
des données de type long ou short pas de probleme mais pour les double
je ne vois pas trop comment faire ca propre. Le probleme viens du fait
que mon processeur ne gere pas les données de 64 bits.
Pour l'ordre, il faut inverser les 8 octets il me semble. Si je lance ntsd calc, je suis en little endian. J'entre une série de 8 octets (eb enter bytes). Je les affiche sous forme d'octets pour vérifier (db display bytes). Cela revient à faire un affichage en big endian : l'octet de poid fort en premier, ce qui paraît le plus intuitif/normal. Puis je les affiche sous forme de "double" (dq = display qword). Je les affiche aussi sous forme de dword et word tant qu'à faire.
Globalement, tous les octets sont inversés pour la taille du type "atomic".
Pour tout inverser, je propose de mettre les deux dwords dans des registres, inverser ces registres, puis inverser l'ordre dans lequel j'ai remis en place les dwords.
totoscill
Messages postés48Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention10 décembre 2009 17 déc. 2008 à 19:13
Oui c'est exactement ca.
J'avais deja pensé à utiliser l'adresse mémoire de ma donner pour swapper cele ci et je pense qu il y a pas d autre moyens. Du fait que le processeur travaille en 32 bits, il convertit le type double en deux int
Cela reviens donc à swapper les donner de deux int.
Une fois l'adresse mémoire gérer cest relativement simple.