Procesor ma wbudowane wykrywanie. Większość architektur zestawu instrukcji określa, że procesor będzie przechwytywał procedurę obsługi wyjątków dla dzielenia liczb całkowitych przez zero (nie sądzę, że to obchodzi, czy dywidenda wynosi zero).
Możliwe jest, że sprawdzenie zerowego dzielnika odbywa się równolegle sprzętowo wraz z próbą wykonania podziału, jednak wykrycie warunku skutecznego anuluje podział i pułapki, więc nie możemy tak naprawdę stwierdzić, czy jakaś część z tego podjęto próbę podziału, czy nie.
(Sprzęt często działa w ten sposób, wykonując wiele czynności równolegle, a następnie wybierając odpowiedni wynik, ponieważ wtedy każda z operacji może rozpocząć się od razu, zamiast serializować wybór odpowiedniej operacji).
Ten sam mechanizm pułapki na wyjątek będzie również używany, gdy włączone jest wykrywanie przepełnienia, o które zwykle prosisz, używając różnych instrukcji add / sub / mul (lub flagi na tych instrukcjach).
Dzielenie zmiennoprzecinkowe ma również wbudowane wykrywanie dzielenia przez zero, ale zwraca inną wartość ( IEEE 754 określa NaN ) zamiast wychwytywania do procedury obsługi wyjątku.
Hipotetycznie rzecz biorąc, jeśli procesor pominąłby jakiekolwiek wykrycie przy próbie podzielenia przez zero, problemy mogą obejmować:
- zawieszenie procesora (np. w pętli inf.) - może się tak zdarzyć, jeśli procesor używa algorytmu do dzielenia, który zatrzymuje się, gdy licznik jest mniejszy niż dzielnik (w wartości bezwzględnej). Takie zawieszenie prawie by się liczyło jako awaria procesora.
- (możliwą do przewidzenia) odpowiedź na śmiecie, jeśli CPU używa licznika do zakończenia dzielenia przy maksymalnej możliwej liczbie kroków dzielenia (np. 31 lub 32 na maszynie 32-bitowej).