Исключения FPU |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
Исключения FPU |
TarasBer |
18.06.2010 10:20
Сообщение
#1
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Создаю тут, потому что мне кажется, что это относится к асму.
Я хочу, чтобы это программа вывела на экран NAN. Меня вполне устраивает значение "не число". Неопределённый результат - тоже результат, что такого-то. Но программа вылетает. Причём вылет происходит не в момент вычисления корня, а при выгрузке результата в память. Что надо сделать, чтобы программа не вылетала? (Вариант writeln('NAN') - не предлагать). -------------------- |
TarasBer |
18.06.2010 11:58
Сообщение
#2
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Дело в том, что я хочу вывести график некой функции (допустим, введённой пользователем). В некоторых точках функция может оказаться не определена.
Чтобы программа это дело обработала, можно ввести проверки (if(abs(a)<1E+1000) and (abs(b)<1E+1000) then c := a*b), но хотелось бы, чтобы программа вычисляла всё, что можно вычислить. Поэтому я таки ввёл исключения, и с ними и жил. Но меня не покидало ощущение, что я делаю что-то не то. Особенно, если надо вычислить значение во многих точках, что требует времени. Кстати, как выкручивались в ТурбоПасе, в котором try except не было? Добавлено через 4 мин. > Костыль будет, если отключить обработку исключения. То есть просто записать NAN в память - это костыль, а перейти в блок обработки исключения, там сделать ещё кучу действий по определению типа исключения и потом всё равно записать в память этот NAN - это не костыль? Мне вот с чисто эстетической точки зрения это дико не нравится. > В твоей программе тебе нужно определенное поведение - значит, лови исключение в своей программе, а не заставляй все остальные программы играть по твоим правилам. То есть даже если я запомню состояние FPU и потом при выходе его восстановлю, то параллельно работающим программам это сильно не понравится? Кстати, Delphi же вызовы некоторых системных функций оборачивает с переводом FPU в режим повышенной точности. И ничего. -------------------- |
Текстовая версия | 21.05.2024 16:22 |