Tag: 四舍五入

fstcw程序集操作数类型不匹配

我试图在C中的内联汇编中使用指定的舍入模式对输入double进行舍入。为此,我需要使用“fstcw”获取FPU控制字,然后更改字中的位。 不幸的是我在第一行遇到错误: double roundD(double n, RoundingMode roundingMode) { asm(“fstcw %%ax \n” ::: “ax”); //clobbers return n; } 我收到的汇编程序错误是: “错误:’fstcw’的操作数类型不匹配。” 我的印象是这个代码片段应该在AX寄存器中存储FPU控制字,长度为16位,长度也是16位。 为了确保,我还使用EAX寄存器而不是AX测试了上述代码,并收到了同样的错误。 我可能会在这里失踪什么? 如果需要任何进一步的信息,请告诉我。