我正在尝试重振使用3DNow的旧Win32游戏!指令集进行3D渲染.
在像Win7这样的现代操作系统上 - 不允许像FPADD或FPMUL这样的Win10指令,程序会抛出异常.
自从3DNow的数量!游戏使用的指令非常有限,在我的VS2008 MFC程序中,我试图使用向量异常处理来获取MMX寄存器的值,模拟3DNow!C代码指令并将值推回处理器3DNow!寄存器.
到目前为止,我成功完成了前两个步骤(我从ExceptionInfo->ExtendedRegisters偏移量为32的字节数组中获取mmx寄存器值并使用浮点类型C指令进行计算),但我的问题是,无论我如何尝试更新MMX寄存器值的寄存器价值似乎保持不变.
假设我的_asm陈述可能是错误的,我还使用这样的简单语句进行了一些最小的测试:
_asm movq mm0 mm7
Run Code Online (Sandbox Code Playgroud)
执行此语句没有其他例外,但在检索MMX寄存器值时,我仍然发现原始值未更改.
如何使作业有效?