Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: как перехватить переполнение (допустим для __int64) в С++  (Прочитано 51369 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #30 : 15-09-2003 08:59 » new

VladimirH, заходи...
Записан

А птичку нашу прошу не обижать!!!
VladimirH
Гость
« Ответ #31 : 15-09-2003 09:02 » 

Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #32 : 15-09-2003 09:05 » 

Цитата

а нельзя просто написать кусок кода на ассемблере, который возьмёт обе переменных за шкирку, сложит младшие 32 бита, затем с учётом флага переноса - старшие 32, а затем вернёт значение флага переноса, которое и покажет переполнение?


Можно, только надо было на С++. А так как ты предложил уже сделает компилятор для конкретной платформы. А может сделает по другому.
Записан
VladimirH
Гость
« Ответ #33 : 15-09-2003 09:07 » 

Да здесь я, ваше величество...
Записан
VladimirH
Гость
« Ответ #34 : 15-09-2003 09:37 » 

Цитата: SlavaI

Можно, только надо было на С++.


С учетом того, что я ошибся при выборе наименования темы, наверно, все таки, можно или это опять получится платформо-зависимое решение?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #35 : 15-09-2003 09:45 » 

VladimirH, ну ты просто попрощался...

Видимо делать платформенно нехзависимое решение можно не в рамках битовых или флаговых решений, а только проверкой которая общая для всех платформ - типа if.
Записан

А птичку нашу прошу не обижать!!!
VladimirH
Гость
« Ответ #36 : 15-09-2003 10:07 » 

Всем привет!!!

Видимо. Жаль не хватает знаний. А что скажет SlavaI?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #37 : 15-09-2003 10:40 » 

Цитата

Видимо делать платформенно нехзависимое решение можно не в рамках битовых или флаговых решений


Битовые проверки можно, почему биты нельзя проверять? Флаги процессора нельзя проверять. А с битами играй сколько угодно, проверяй, маски накладывай и т.д.
Записан
VladimirH
Гость
« Ответ #38 : 15-09-2003 11:10 » 

Значит можно под'итожить таким образом: пишем ассемблерный код, вылавливающий переполнение, или переходим на 64-битный процессор, в компиляторах на языки которого должна быть предусмотрена проверка ситуации переполнения.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #39 : 15-09-2003 11:41 » 

SlavaI, описался - думал про регистры ...  :twisted:
Записан

А птичку нашу прошу не обижать!!!
VladimirH
Гость
« Ответ #40 : 15-09-2003 13:54 » 

Цитата: Гром
SlavaI думал про регистры ...  :twisted:


а написал что, биты или флаги? Я не понял.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #41 : 15-09-2003 16:58 » 

:arrow: скорее всего и для умножения там сопроцессор что-нибудь подкинет...

 :arrow:
Цитата

Но будет ли соответствующий код работать быстрее, чем функция MulAndTest или вариант с сatch-ем?


вообще-то всё, что делается на ассемблере, работает с максимальной эффективностью , так как любое другое на ём и начертано Жжешь
Записан

Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #42 : 15-09-2003 17:10 » 

VladimirH, я просто думал о трех вещах в тот момент и написал вторую Жаль Алексей1153, с одной разницей - на разных платформах по разному все начертано Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
Kuzmich
Гость
« Ответ #43 : 16-09-2003 03:53 » 

Цитата: NetRaider

А Вы форумом часом не ошиблись? Нет в С++ никаких флагов OV.

Действительно, т.к. использую MFC там этот флаг называется OV.
Цитата: VladimirH

С книгой "Алгоритмические трюки для программистов" еще не разобрался...

Можно ссылочку ?
Цитата: VladimirH

но боюсь, что придется  мои пожелания оставить до перехода на 64-битный процессор.

Там будем обсуждать переполнение в _int128 Улыбаюсь
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #44 : 16-09-2003 05:00 » 

Цитата

Можно ссылочку ?


Можно только купить. В электронном виде не видел, а хотелось бы родной вариант увидеть, а то наши пока перевели а потом напечатали добавили опечаток.
Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines