Здравствуйте, cpp, Вы писали:
cpp>Здравствуйте, KARALIUS, Вы писали:
KAR>>Проблема такая: пишу на встроенном асме под Visual C++ .NET
KAR>>Использую SSE инструкции, все отрабатывает правильно, вот только в окне registers в отладке все XMM регистры равны 0, независимо от того, что я с ними делаю. Помогите
cpp>во-первых есть watch, на всякий случай,
cpp>во-вторых окно дизассемблера.
cpp>а вообще если не поможет давай код — посмотрим
Watch тоже показывает нули, а код пожалуйста, даже прокомментирую:
void main() // (1)
{ // (2)
float n1[] = {1.0, 2.0, 3.0, 4.0}; // (3)
float n2[4] = {0, 0, 0, 0}; // (4)
__asm{
movups xmm0, n1; // (5)
movups n2, xmm0; // (6)
}
}
Строка 5 выполняется, ничего с регистром xmm0 не происходит
Строка 6 выполняется, массивы n2 и n1 эквивалентны, причем xmm0 все еще равен 0.
В общем байда какая-то. Уже нашел два ServicePack'a под .NET. Ничего не помогает.
Причем остальное все работает, простые инструкции меняют регистры общего назначения,
MMX команды меняют MMX регистры, а SSE команды не меняют регистры??????????
Ничего не понятно, уже даже написал мелко-мягким, надеюсь ответят.