2010-05-24 2 views

ответ

5

Попробуйте section 8.6 of Gough's Introduction to GCC, который демонстрирует инструкцию x86 FLDCW. Но это помогает, если вы сообщите нам, зачем вам это нужно - если вы хотите, чтобы ваши парные разряды были 64-разрядными удваиваниями IEEE-754, самый простой способ - скомпилировать с -msse -mfpmath = sse.

1

Какие элементы точности вы контролируете?

По Microsoft's Website:

_control87 функция получает и устанавливает управляющее слово с плавающей точкой. Управляющее слово с плавающей запятой позволяет программе изменять режимы точности, округления и бесконечности в математическом пакете с плавающей запятой. Вы также можете маскировать или разоблачать исключения с плавающей запятой, используя _control87. Если значение для маски равно 0, _control87 получает управляющее слово с плавающей запятой. Если маска отлична от нуля, устанавливается новое значение для управляющего слова: для любого бита, который включен (равен 1) в маске, соответствующий бит в новом используется для обновления управляющего слова. Другими словами, fpcntrl = ((fpcntrl & ~mask) | (new & mask)) где fpcntrl - это управляющее слово с плавающей запятой.

Обратите внимание на ключевое слово "library". Эта функция управляет библиотекой Microsoft, которая может отсутствовать на Mac.

Я предлагаю следующее:

  1. контроля точка чип с плавающей на Мак сами
  2. Или использовать компилятор Microsoft для Mac
  3. Или найти способ, чтобы переместить управления с плавающей точкой в более родовое пятно в вашей программе.

Лучший совет, который я могу дать, состоит в том, чтобы сохранить как можно больше кода со стандартными и платформенными или библиотечными проблемами до минимума. Для этих функций, связанных с функциями платформы, переместите их в свои исходные файлы/единицы перевода. Создавайте копии этих функций, по одному для каждой платформы. Пусть компоновщик решает, с кем использовать.

Удачи.