Nat*_*ver 3 binary x86 exception
我刚下载了最新版本的SmartMusic(http://www.smartmusic.com),并尝试首次运行它.
问题是,启动屏幕上有一个未处理的Win32异常.
作为一个极客/黑客(原来的意思)我当然想知道为什么会这样,所以我打开我的Visual Studio调试器来看一下程序集并在调试器下运行它.
未处理的异常是一个"非法指令",并且绊倒它的指令是:
cvtdq2ps xmm0,xmm0
现在,我真的不太了解汇编,但这对我来说看起来像是一个有效的指令(这里有一些信息)所以我是想知道是否有人知道这是怎么回事以及如何(如果可能的话)解决它.
(我宁愿修理一些东西,只需花一个小时的时间通过电话获得技术支持就可以得到它"我们会有人看看它,感谢你打电话给我一个美好的一天*点击*")
顺便说一句,我有尝试重新安装它,所以它不是那样:)
这是异常之前和之后的代码
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
Run Code Online (Sandbox Code Playgroud)
你在一台很旧的机器上运行(2005年以前)吗?cvtdq2ps需要SSE2; 我很难想象任何人仍在使用缺乏SSE2支持的硬件,但这是可能的.
编辑:是的,这就是问题所在.Athlon XP系列有SSE,但没有SSE2,这是非法指令的原因.我想是时候进行现代化了.有越来越多的软件需要SSE2和SSE3.