2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Деление на 0
Сообщение24.07.2014, 15:19 
Аватара пользователя


30/05/09
121
Киев
Да подождите вы со своими кучами. Начал строить логику на SEH. В Debug конфигурации все работает норм, а вот в Release - проблемы с отлавливанием исключения при переполнении. При выполнении 1E+300 / 1E-300 приложение с треском вылетает и выкидывает message типа: "Исключение unknown software exception (0x91) в приложении по адресу...". Методом тыка и сравнения опций конфигураций Debug и Release обнаружилась опция Fast Floating Point (-ff). При её сбрасывании всё работает. Ассемблерный код деления с выключенной опцией:
Используется синтаксис ASM
fld   qword ptr [ebp-$2c]
fdv   qword ptr [ebp-$34]
fstep qword ptr [ebp-$3c]
wait
 

А с включенной опцией всё тоже самое, только без wait. В самой справке говориться, что эта опция управляет приведением типа:
Цитата:
Floating-point operations are optimized without regard to explicit or implicit type conversions. Calculations can be faster than under ANSI operating mode.

The purpose of the fast floating-point option is to allow certain optimizations that are technically contrary to correct C semantics.

double x; x = (float) (3.5*x);
To execute this correctly, x is multiplied by 3.5 to give a double that is truncated to float precision, then stores as a double in x. Under fast floating-point operation, the long double product is converted directly to a double. Since very few programs depend on the loss of precision on passing to a narrower floating-point type, fast floating point is on by default.

When this option is disabled (-ff-), the compiler follows strict ANSI rules regarding floating-point conversions.
The default is True.

Хотя в ассемблерном варианте ничего такого не наблюдается. Проблема решена. Однако, не понятно почему это решение работает. У кого-то есть объяснения?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group