Я только что скачал последнюю версию SmartMusic (http://www.smartmusic.com) и попытался запустить ее в первый раз.
Дело в том, что на заставке есть необработанное исключение Win32.
Будучи выродком / хакером (в первоначальном смысле этого слова) я, конечно, хотел выяснить, почему все так, поэтому я открыл свой отладчик Visual Studio, чтобы посмотреть на сборку и запустить ее под отладчиком.
Необработанное исключение - это «Незаконная инструкция», и команда, которая его вызывает:
cvtdq2ps xmm0,xmm0
Сейчас я не очень разбираюсь в сборке, но для меня это выглядит как правильная инструкция ( здесь - это некоторая информация), поэтому мне было интересно, знает ли кто-нибудь, как это неправильно и как (если возможно) ) чтобы исправить это.
(Я бы предпочел что-то исправить и просто покончить с этим, чем потратить час на телефон с техподдержкой и просто получить «у нас будет кто-нибудь, посмотрите, спасибо за звонок, хорошего дня *
click *
»)
Кстати, я попытался переустановить его, так что это не так :)
вот код до и после исключения
je 004DBAEA
mov edx,dword ptr [esp+8]
push edx
call 007806A0
mov eax,dword ptr [esi+4]
mov ecx,dword ptr [eax+3EF0h]
test ecx,ecx
je 004DBAFC
call 007506A0
mov eax,dword ptr [esi+1CCh]
mov ecx,dword ptr [esi+4]
mov edx,dword ptr [ecx]
push eax
mov eax,dword ptr [edx+218h]
call eax
mov ecx,dword ptr [esi+4]
mov edx,dword ptr [ecx]
movd xmm0,dword ptr [esi+1B8h]
mov eax,dword ptr [edx+26Ch]
push ecx
cvtdq2ps xmm0,xmm0 ; this is the instruction it chokes on
movss dword ptr [esp],xmm0
call eax
mov ecx,dword ptr [esi+4]
movss xmm0,dword ptr [esi+1ACh]
movss dword ptr [ecx+4ACh],xmm0
xor eax,eax
cmp dword ptr [esi+1B0h],eax
setne al
cmp eax,1
mov dword ptr [esi+1B0h],eax
mov eax,dword ptr [esi+4]
sete dl
mov byte ptr [eax+0ED2h],dl
mov edx,dword ptr [esi+4]
xor eax,eax
cmp dword ptr [esi+1B4h],eax
setne al
cmp eax,1