Исключение общей защиты генерируется для всех нарушений памяти, не вызывающих прочих исключений. Сюда входят (но не ограничивают перечень):
Превышение границы сегмента при использовании сегментов CS, DS, ES, FS или GS.
Превышение границы сегмента при ссылке к таблице дескрипторов.
Передача выполнения сегменту, не являющемуся выполняемым (кодовым) сегментом.
Попытка записи в сегмент данных, доступный только для чтения, или в кодовый сегмент.
Чтение из кодового сегмента, доступного только для выполнения.
Загрузка регистра SS селектором сегмента, доступного только для чтения (если только этот селектор не берется из TSS при переключении задачи, так как в этом случае происходит исключение "неверный TSS").
Загрузка регистра DS, ES, FS или GS селектором кодового сегмента, доступного только для выполнения.
Загрузка регистра SS селектором выполняемого сегмента.
Доступ к памяти при помощи регистров DS, ES, FS или GS, когда в них содержится пустой селектор.
Переключение на Занятую задачу.
Нарушение правил привилегированности.
Превышение длины команды предельного значения 15 байтов (это может случиться только при использовании перед командой избыточных префиксов).
Загрузка регистра CR0 при установленном бите PG (подкачка страниц разрешена) и очищенном бите PE (защита запрещена).
Прерывание или исключение через шлюз пренрывания или ловушки из виртуального режима 8086 к обработчику с уровнем привилегированности иному, нежели 0.
Исключение общей защиты по типу относится к сбою. В ответ на исключение общей защиты процессор помещает в стек обработчика исключений код ошибки. Если исключение вызвано загрузкой дескриптора, то код ошибки содержит селектор для данного дескриптора; в противном случае код ошибки является пустым. Источник для селектора в коде ошибки может представлять собой одно из:
Операнд команды.
Селектор из шлюза, являющегося операндом команды.
Селектор из TSS, участвующего в переключении задачи.