汇编程序MMX错误

use*_*401 0 assembly mmx

我正在做我的学校项目:Visual Studio中的动态MASM汇编程序库,它实现了CaesarCipher的方法.当我使用控制台应用程序时,一切正常.当我创建Windows窗体UI时,MMX函数开始导致错误.

MMX功能 - 我的项目的问题.我认为在我的项目中没有使用它,但我要做的一件事就是使用MMX代码,即使它没用.

在运行良好的控制台:

movq mm1, mm0

在Forms Application中,它会导致一般错误.

har*_*old 5

使用MMX指令将导致FPU切换到MMX模式(有点,它实际上不是模式),这意味着所有8个FPU寄存器将变为有效并准备好供MMX指令使用.在此状态下使用x87指令很容易失败,所有FPU堆栈插槽都被填满,因此加载任何内容都会导致FPU堆栈溢出.在一个控制台程序中很容易就会出现没有使用x87指令的情况,因此将FPU保留在该状态并不是一个大问题,但是Windows窗体使用了一些x87指令,他们认为会有空间像往常一样FPU堆栈.

使用emms指令使用MMX后,可以清空FPU堆栈.