Микропроцессоры 80x86 генерируют примерно 20 различных исключений. Ядро должно предоставить специальный обработчик для каждого типа исключения. При некоторых исключениях управляющий блок процессора генерирует также код аппаратной ошибки и помещает его в стек режима ядра до запуска обработчика исключения.
В приведенном далее списке даны векторы, названия, типы и краткие описания исключений, генерируемых процессорами 80><86. Дополнительную информацию можно найти в технической документации Intel.
0 - "Divide error" (Ошибка деления на ноль), ошибка. Возбуждается, когда программа пытается выполнить целочисленное деление на 0;
1 - "Debug" (Отладка), ловушка или ошибка. Возбуждается, когда установлен флаг tf регистра еflags (очень полезна при пошаговом выполнении отлаживаемой программы) или когда адрес инструкции или операнда попадает в диапазон, установленный активным регистром отладки;
2 - не используется. Зарезервирован для немаскируемых прерываний (тех, которые используют вывод NMI);
3 - "Breakpoint" (Точка останова), ловушка. Вызывается с помощью инструкции int3 (точка останова), обычно вставляемой отладчиком;
4 - "Overflow" (Переполнение), ловушка. Инструкция into (проверка на переполнение) была выполнена при установленном флаге of (переполнение) в регистре ef lags;
5 - "Bounds check" (Сбой проверки границ), ошибка. Инструкция bound (проверка границы адреса) была выполнена с операндом, лежащим вне допустимых границ адреса;
6 - "Invalid opcode" (Недопустимый код операции), ошибка. Выполняющий блок процессора обнаружил недопустимый код операции (часть машинной инструкции, определяющая выполняемую операцию);
7 - "Device not available" (Устройство недоступно), ошибка. Была выполнена инструкция ESCAPE, ММХ и SSE/SSE2 при установленном флаге ts в регистре его;
8 - "Double fault" (Двойная ошибка), авария. Обычно, когда процессор получает исключение при попытке вызвать обработчик для предыдущего исключения, эти два исключения могут быть обработаны последовательно. Однако в некоторых случаях процессор не может обработать их последовательно и возбуждает это исключение;
9 - "Coprocessor segment overrun" (Нарушение в сегменте сопроцессора), авария. Проблемы с внешним математическим сопроцессором (относится только к старым микропроцессорам 80386);
10 - "Invalid TSS" (Недопустимый сегмент состояния задачи), ошибка. Процессор пытался выполнить переключение контекста для процесса, имеющего недопустимый сегмент состояния задачи;
11 - "Segment not present" (Сегмент отсутствует), ошибка. Попытка сослаться на сегмент, отсутствующий в памяти (такой, у которого сброшен флаг Segment-Present в дескрипторе сегмента);
12 - "Stack segment fault" (Ошибка в сегменте стека), ошибка. Инструкция попыталась выйти за пределы сегмента стека, или сегмент, идентифицируемый полем ss, отсутствует в памяти;
13 - "General protection" (Общий сбой защиты), ошибка. Нарушено одно из правил доступа в защищенном режиме 80x86;
14 - "Page Fault" (Ошибка обращения к странице), ошибка. Обращение к странице, отсутствующей в памяти, или соответствующая запись Таблицы Страниц содержит нули, или произошло нарушение механизма защиты выделения страниц;
15 - Зарезервирован компанией Intel;
16 - "Floating-point error" (Ошибка операции с плавающей точкой), ошибка. Блок выполнения операций с плавающей точкой, встроенный в чип процессора, просигнализировал об ошибке, такой как переполнение или деление на 4;
17 - "Alignment check"(Сбой проверки выравнивания), ошибка. Адрес операнда не выровнен должным образом (например, адрес длинного целого не кратен 4);
19 - "floating point exception" (Исключение при выполнении SIMD-операции с плавающей точкой), ошибка. Блок SSE или SSE2, встроенный в процессор, просигнализировал об ошибке при выполнении операции с плавающей точкой.
Значения с 20 до 31 зарезервированы компанией Intel для будущих разработок. Как показано, каждое исключение обслуживается соответствующим обработчиком, который обычно посылает сигнал Unix процессу, вызвавшему исключение.