Вам необходимо замаскировать исключения SSE для 64-разрядных, потому что 64-разрядный код обычно использует SSE для выполнения арифметики с плавающей запятой.
Вызов SetMXCSR
для изменения состояния управления SSEБлок.Лично я бы продолжил маскировать исключения 8087, так как 64-битный код может свободно использовать модуль 8087, если он того пожелает.Волшебное значение MXCSR, которое вы хотите использовать при вызове кода веб-браузера, равно $1F80
.Это значение Windows по умолчанию для MXCSR.
В качестве альтернативы вы можете вызвать SetSSEExceptionMask
и SetFPUExceptionMask
, передав exAllArithmeticExceptions
, чтобы замаскировать все исключения.Эти удобные методы сделают ваш код более читабельным.
Если вы уверены, что вам нужно маскировать исключения только на 8087 в x86 и SSE в x64, тогда вы можете просто позвонить SetExceptionMask
.Это изменит состояние управления 8087 под x86 и изменит состояние управления SSE под x64.
Если бы мне пришлось выбирать между установкой всего состояния управления или использованием вспомогательных методов, чтобы изменить только часть состояния маскирования исключенийЯ бы установил весь контроль состояния.Эти элементы управления ActiveX написаны в предположении, что вы будете использовать инструменты MS и ожидаете определенного состояния элемента управления FP.Я бы дал этим элементам управления точное состояние управления, которое они ожидают, и затем вернул бы их обратно в состояние элемента управления Delphi, когда выполнение вернется из элементов управления.