SSE + .NET
От: KARALIUS Россия http://ci-school.org
Дата: 03.12.02 10:36
Оценка:
Проблема такая: пишу на встроенном асме под Visual C++ .NET
Использую SSE инструкции, все отрабатывает правильно, вот только в окне registers в отладке все XMM регистры равны 0, независимо от того, что я с ними делаю. Помогите
----
При промывке мозгов извилины стираются.
Re: SSE + .NET
От: cpp Россия http://www.elecard.com
Дата: 03.12.02 10:48
Оценка:
Здравствуйте, KARALIUS, Вы писали:

KAR>Проблема такая: пишу на встроенном асме под Visual C++ .NET

KAR>Использую SSE инструкции, все отрабатывает правильно, вот только в окне registers в отладке все XMM регистры равны 0, независимо от того, что я с ними делаю. Помогите

во-первых есть watch, на всякий случай,
во-вторых окно дизассемблера.
а вообще если не поможет давай код — посмотрим.
Сергей.
Re[2]: SSE + .NET
От: KARALIUS Россия http://ci-school.org
Дата: 03.12.02 13:50
Оценка:
Здравствуйте, 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 команды не меняют регистры??????????
Ничего не понятно, уже даже написал мелко-мягким, надеюсь ответят.
----
При промывке мозгов извилины стираются.
Re[2]: SSE + .NET
От: KARALIUS Россия http://ci-school.org
Дата: 03.12.02 13:53
Оценка:
Здравствуйте, 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 команды не меняют регистры??????????
Ничего не понятно, уже даже написал мелко-мягким, надеюсь ответят
----
При промывке мозгов извилины стираются.
Re[3]: SSE + .NET
От: cpp Россия http://www.elecard.com
Дата: 04.12.02 04:12
Оценка:
Здравствуйте, 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>Ничего не понятно, уже даже написал мелко-мягким, надеюсь ответят.


По-моему зря, не ответят еще и поиздеваются.

Удачи.
Сергей.
Re: SSE + .NET
От: KARALIUS Россия http://ci-school.org
Дата: 04.12.02 08:55
Оценка:
Прошу прощения у программерского сообщества за то, что замутил воду. На самом деле небольшая недоработка Microsoft поставила все с ног на голову. Просто XMM регистры не активизируются для консольного приложения. Сделал проект Dialog-based, и все стало ОК.
----
При промывке мозгов извилины стираются.
Re[2]: SSE + .NET
От: Volnin L.V. Россия  
Дата: 06.12.02 04:45
Оценка:
Здравствуйте, KARALIUS, Вы писали:

KAR>Прошу прощения у программерского сообщества за то, что замутил воду. На самом деле небольшая недоработка Microsoft поставила все с ног на голову. Просто XMM регистры не активизируются для консольного приложения. Сделал проект Dialog-based, и все стало ОК.


Не совсем понял вас KARALIUS. Как это не активизируются? Они были отключены (в смысле регистры)?
best regards, Leonid
Re[2]: SSE + .NET
От: Serg Bormant  
Дата: 07.12.02 13:07
Оценка:
Здравствуйте, KARALIUS, Вы писали:

KAR>Прошу прощения у программерского сообщества за то, что замутил воду. На самом деле небольшая недоработка Microsoft поставила все с ног на голову. Просто XMM регистры не активизируются для консольного приложения. Сделал проект Dialog-based, и все стало ОК.


Убедительная просьба пояснить,
а) означает ли "недоработка" то, что это будет исправлено в дальнейшем,
б) был ли рекомендован способ решения именно для консольного варианта,
а также, по возможности, привести полный текст вопроса и ответа "авторитетного источника" (ведь это был он? ).

Спасибо.
--

wbr, sb Правила форумов RSDN, Как правильно задавать вопросы
Re[2]: SSE + .NET
От: Atilla Россия  
Дата: 11.12.02 20:18
Оценка:
Здравствуйте, KARALIUS, Вы писали:

KAR>Прошу прощения у программерского сообщества за то, что замутил воду. На самом деле небольшая недоработка Microsoft поставила все с ног на голову. Просто XMM регистры не активизируются для консольного приложения. Сделал проект Dialog-based, и все стало ОК.


Бред какой-то... у меня все работало в консольном режиме, когда я этими вещами баловался. Не знаю, что там писал дебугер, но прога работала правильно.
Кр-ть — с.т.
Re[3]: SSE + .NET
От: KARALIUS Россия http://ci-school.org
Дата: 22.01.03 16:25
Оценка:
Здравствуйте, Atilla, Вы писали:

A>Здравствуйте, KARALIUS, Вы писали:


KAR>>Прошу прощения у программерского сообщества за то, что замутил воду. На самом деле небольшая недоработка Microsoft поставила все с ног на голову. Просто XMM регистры не активизируются для консольного приложения. Сделал проект Dialog-based, и все стало ОК.


A>Бред какой-то... у меня все работало в консольном режиме, когда я этими вещами баловался. Не знаю, что там писал дебугер, но прога работала правильно.


Прога и у меня работала правильно, а вот в окне Registers нули сплошные именно в консольном варианте. По поводу исправления — вопрос к Билли.
----
При промывке мозгов извилины стираются.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.