В Mac OS X это довольно сложно. OS X использует модуль SSE для всех математик FP по умолчанию, а не блок x87 FP. Узел SSE не соблюдает параметры прерывания, поэтому это означает, что в дополнение к разрешающим прерываниям необходимо убедиться, что весь ваш код не должен использовать математику SSE.
Вы можете отключить математику, добавив «-mno-sse -mno-sse2 -mno-sse3» к вашим CFLAGS. После этого вы можете использовать некоторую встроенную сборку для настройки своих исключений FP, в основном тех же флагов, что и для Linux.
short fpflags = 0x1332 // Default FP flags, change this however you want.
asm("fnclex");
asm("fldcw _fpflags");
Единственный улов, который вы можете обнаружить, состоит в том, что, поскольку OS X полностью построена на использовании sse, могут быть обнаружены ошибки. Я знаю, что когда-то был большим с обработчиком сигнала, который не передавал правильные коды, но это было несколько лет назад, надеюсь, теперь оно исправлено.
Это может быть не столь актуальны в 2008 году, но стоит отметить, что 64 битный код используется блок SSE, а не блок x87 FP на все платформы (не только OS X). – Spock