У меня есть вопрос об исключениях EXCEPTION_INT_OVERFLOW и EXCEPTION_INT_DIVIDE_BY_ZERO.
Windows будет ловить ошибки #DE, сгенерированные инструкцией IDIV, и закончит генерировать и исключение SEH с одним из этих двух кодов.
У меня есть вопрос, как он отличается от двух условий? Информация о idiv в руководстве Intel указывает, что он будет генерировать #DE как в "делении на ноль", так и "в случае сбоя".
Я быстро просмотрел раздел о ошибке #DE в томе 3 руководства Intel, и лучшее, что я смог собрать, это то, что ОС должна декодировать инструкцию DIV, загружать аргумент divisor и затем сравнивать его к нулю.
Это кажется мне немного сумасшедшим. Почему разработчики чипов не используют какой-либо флаг, чтобы различать две причины ошибки? Я чувствую, что мне что-то не хватает.
Кто-нибудь знает наверняка, как ОС отличает две разные причины отказа?