问题设置FPU控制字

时间:2011-01-10 05:07:22

标签: c++ c++builder inline-assembly

我有一个函数是实用程序库的一部分,它是在C ++ Builder中编译和运行时创建的失败的单元测试。问题功能如下。在运行单元测试时,程序似乎卡在fldcw controlWord行,并且无法移动。它似乎在等待永远不会发生的事情。有什么想法吗?

void FPUControl::setControlWord(short controlWord)
{
    // set the control word - note this assembly construct works on 
    // Visual C++ and Borland C++, but may need to be changed for other
    // compilers
#ifndef __GNUC__
    __asm
    {
        fldcw controlWord
    }
#else
    asm volatile
    (
        "fldcw %[controlWord]"
    :
    : [controlWord] "m" (controlWord)
    );
#endif
}

2 个答案:

答案 0 :(得分:1)

您的代码适用于我(使用C ++ Builder 2007验证)。

setControlWord(Default8087CW);

其中Default8087CW是4978。

答案 1 :(得分:0)

@Zach:代码也在C ++ Builder XE下编译和运行。为了记录,我没有把它作为课程的一部分。