Значения регистра XMM - PullRequest
       45

Значения регистра XMM

2 голосов
/ 17 октября 2011

Мне трудно интерпретировать значение регистров xmm в окне регистров Visual Studio.В окнах отображается следующее:

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

Из кода, который я запускаю, значение XMM0 и XMM1 должно быть 6 и 8 (или наоборот).Здесь показано значение регистра: XMM01 = +2.37500E+000

Что это означает?

1 Ответ

6 голосов
/ 17 октября 2011

Да, это выглядит так:

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

Причина, по которой у вас возникают проблемы с интерпретацией, заключается в том, что ваш отладчик отображает только каждый 128-битный регистр XMM в шестнадцатеричном виде, а затем ниже 4 x одиночные точности с плавающей точкой, но вы, очевидно, используете double точности с плавающей точкой.

Я не знаком с отладчиком Visual Studio, но в идеале должен быть способ изменить представлениеваших регистров XMM - вам, возможно, придется обратиться к руководству или интерактивной справке для этого.

Обратите внимание, что в целом использование двойной точности с SSE редко имеет какое-либо значение, особенно если у вас достаточно современный процессор x86 сдва FPU.

...