2011-10-17 9 views
1

J'ai du mal à interpréter la valeur des registres xmm dans la fenêtre de registre de Visual Studio. Les fenêtres affiche les éléments suivants:Valeurs de registre XMM

XMM0 = 00000000000000004018000000000000 XMM1 = 00000000000000004020000000000000 
XMM2 = 00000000000000000000000000000000 XMM3 = 00000000000000000000000000000000 
XMM4 = 00000000000000000000000000000000 XMM5 = 00000000000000000000000000000000 
XMM6 = 00000000000000000000000000000000 XMM7 = 00000000000000000000000000000000 

XMM00 = +0.00000E+000  XMM01 = +2.37500E+000  XMM02 = +0.00000E+000  
XMM03 = +0.00000E+000  XMM10 = +0.00000E+000  XMM11 = +2.50000E+000  
XMM12 = +0.00000E+000  XMM13 = +0.00000E+000 

À partir du code que je suis en cours d'exécution, la valeur de XMM0 et XMM1 doit être 6 et 8 (ou inverse). La valeur de registre ici affichée est: XMM01 = +2.37500E+000

Qu'est-ce que cela signifie?

Répondre

5

Oui, il ressemble à:

XMM0 = { 6.0, 0.0 } // 6.0 = 0x4018000000000000 (double precision) 
XMM1 = { 8.0, 0.0 } // 8.0 = 0x4020000000000000 (double precision) 

La raison pour laquelle vous avez des problèmes interprétez est que votre débogueur est qu'afficher chaque registre XMM 128 bits en hexadécimal puis en dessous de 4 x unique précision flotte, mais vous utilisez évidemment double flotteurs de précision. Je ne suis pas familier avec le débogueur Visual Studio, mais il devrait idéalement être un moyen de modifier la représentation de vos registres XMM - vous devrez peut-être consulter le manuel ou l'aide en ligne pour cela. Notez qu'en général, l'utilisation de la double précision avec SSE est rarement une valeur, en particulier si vous avez une CPU x86 assez moderne avec deux FPU.

+1

si quelqu'un trébuche sur ce via Google comme je l'ai fait. Les doubles sont dans 'XMM0DL',' XMM0DH' dans le débogueur Visual Studio qui sont affichés dans la boîte de dialogue "Registres" avec "AVX Double" activé. – PeterT

Questions connexes