Проблема установки контрольного слова FPU - PullRequest
2 голосов
/ 10 января 2011

У меня есть функция, которая является частью библиотеки утилит, и она не проходит модульные тесты, созданные при компиляции и запуске в 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 ]

1 голос
/ 10 января 2011

Ваш код отлично работает для меня (проверено в C ++ Builder 2007).

setControlWord(Default8087CW);

, где Default8087CW равно 4978.

0 голосов
/ 11 января 2011

@ Зак: Код также компилируется и запускается в C ++ Builder XE.Для справки, я не включил его в состав класса.

...