小编gho*_*gho的帖子

如何在Windows异常处理程序中设置MMX寄存器以模拟不受支持的3DNow!说明

我正在尝试重振使用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寄存器值时,我仍然发现原始值未更改.

如何使作业有效?

c++ windows assembly exception mmx

8
推荐指数
1
解决办法
247
查看次数

标签 统计

assembly ×1

c++ ×1

exception ×1

mmx ×1

windows ×1