In Mac OS X questo è moderatamente complicato. OS X utilizza l'unità SSE per tutte le matematiche FP di default, non l'unità FP x87. L'unità SSE non rispetta le opzioni di interruzione, quindi significa che oltre a abilitare gli interrupt, è necessario assicurarsi di compilare tutto il codice per non utilizzare la matematica SSE.
è possibile disattivare la matematica con l'aggiunta di "-mno-sse -mno-SSE2 -mno-SSE3" per CFLAGS. Una volta fatto, puoi usare un assembly inline per configurare le tue eccezioni FP, con fondamentalmente gli stessi flag di Linux.
short fpflags = 0x1332 // Default FP flags, change this however you want.
asm("fnclex");
asm("fldcw _fpflags");
Quello cattura si può trovare è che dal momento che OS X è costruito interamente utilizzando sse ci possono essere errori non rilevati. So che prima c'era un grosso problema con il gestore del segnale che non passava indietro i codici corretti, ma è stato qualche anno fa, si spera che sia stato risolto adesso.
fonte
2008-10-31 04:23:30
Questo forse non era così rilevante nel 2008, ma vale la pena notare che il 64 bit di codice utilizza l'unità SSE piuttosto che unità x87 FP su tutte le piattaforme (non solo OS X). – Spock