翻转mxcsr寄存器中的位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻转mxcsr寄存器中的位相关的知识,希望对你有一定的参考价值。
我正在尝试在mxcsr控制寄存器中设置位。我知道如何用gcc(fesetenv
)做到这一点,但我无法让这个工作MSVC。我考虑过的可能性是:
- 程序集,在MSVC x64上不支持内联。
_controlfp
函数,似乎不一对一匹配(请注意,我可能完全误解了这个函数,但所有这些都记录不清)。
具体来说,我想设置these bits:
- “非正规为零”
- “冲到零”
有关如何做到这一点的任何想法?
答案
_controlfp
例程是一个适用于ARM,x86和x64的通用例程 - 没有理由期望它使用实际硬件寄存器使用的相同位。
从文章_controlfp看来,_controlfp
似乎不允许单独控制输入和输出非正规数,而是将它们组合在一起。
要将x64 SSE2设置为将非正规操作数和输出刷新为零,请使用
_controlfp(_DN_FLUSH, _MCW_DN);
以上是关于翻转mxcsr寄存器中的位的主要内容,如果未能解决你的问题,请参考以下文章