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