Исключения и системные вызовы
- Исключения - события, которые, помимо условных и безусловных переходов, изменяют нормальный порядок исполнения инструкций.
NB Терминология не устоялась. Так intel использует только термин "прерывание". В традиции mips(risc) принято использовать термин "исключение" для обозначения любого неожиданного изменения в алгоритме управления. Термин "прерывание" будет использоваться только для обозначения внешних событий.
- Возможная классификация:
Тип события
Источник
Термин MIPS
Переполнение
Внутренний
Исключение
Нет инструкции
Внутренний
Исключение
Системный вызов
Внутренний
Исключение
Запрос внешнего устройства
Внешний
Прерывание
Отказ оборудования
Внутренний/Внешний
Исключение/Прерывание
- Общая идея обработки исключения.
- Аппаратура процессора обнаруживает исключения и осуществляет передачу управления.
- переход на фиксированный адрес
- вектор прерываний
- Программная обработка
- Возврат к нормальному порядку исполнения инструкций.
- Аппаратура процессора обнаруживает исключения и осуществляет передачу управления.
- Еще одна возможная классификация:
Класс
Причина
Синхронное/Асинхронное
Поведение при возврате
Аварийное завершение(abort)
Фатальная ошибка
Да
Нет возврашения
Сбой(fault)
Потенциально восстановимая ошибка
Да
Возможен возврат к следующей инструкции
Системное прерывание(trap)
Предусмотренное исключение
Да
Возврат к следующей инструкции
Аппаратное прерывание(interrupt)
Сигнал устройства ввода/вывода
Нет
Возврат к следующей инструкции
- MIPS
- Coprocessor_0
Название
Номер
Назначение
BadVAddr
8
Адрес при обращении к которому произошло исключение
Status
12
Состояние: маска прерываний, биты разрешений, ...
Cause
13
Тип исключения и биты отложенных прерываний
EPC
14
Адрес инструкции, которая вызвала исключение
- Инструкции для работы с регистрами Cop_0:
- mfc0 Rdest, C0src
- mtc0 Rsrc, C0dest
- eret