tonyk_avВернуть осмысленное число нельзя, это когда-нибудь обязательно вылезет критической ошибкой и случится пожар/наводнение/взрыв/КЗ и т.п. И не исключено что со смертельным исходом. Оно Вам надо, брать на себя такую ответственность? Ведь применить этот контроллер могут где угодно.
Самое логичное что можно сделать — вернуть ровно то же, что и при делении ненулевого числа на ноль. Т.е. вне зависимости от числителя.
Разумеется поведение функции в этом случае должно быть обязательно подробно документировано, это [частично] снимет ответственность за последствия.
Поскольку нет никаких сомнений, что в разработке процессоров Intel участвовали достаточно квалифицированные математики,
Очень даже есть такие сомнения. Стивен Морс как я понял совсем не математик, а 8086 разрабатывал он.
Их можно вынудить возвращать значение, не вызывая остановку программы или исключение. В этом случае (не только для 0/0, но и для любой другой операции, которая не может быть корректно выполнена) они возвращают "неопределённое целое", которое определяется как минимально возможное отрицательное значение целевого типа. Например, для 32-битных значений это будет
, для 16-битных —
. Это отражено в официальной документации.
Сошлитесь пожалуйста на эту самую официальную документацию. Я в документе
Intel® 64 and IA-32 Architectures Software Developer’s Manual от июля 2017 (впрочем как и в текущей от октября 2019) ничего подобного не нашёл. Более того, для целочисленных команд деления там прямо проверяется условие равенства нулю знаменателя и если это так, то больше ничего не делается кроме возврата исключения. Так что ни о каком возврате числа речи не идёт в принципе. Т.е. это возможно не поведение процессора, а поведение уже
обработчика исключений, а их могут писать кто угодно и тогда привязывать это к рекомендациям самой Intel некорректно. Потому и хочется понять где Вы это видели.