Исключением называется нарушение естественного хода выполнения программы. Исключение может возникнуть в следующих случаях:
· программная ловушка;
· аппаратное прерывание;
· нереализованная инструкция.
В случае возникновения исключения процессор Nios II выполняет следующую последовательность действий:
1. сохраняет текущее состояние процессора, путем копирования содержимого регистра status (ctl0) в регистр estatus (ctl1);
2. обнуляет бит U регистра status, переводя тем самым процессор в режим супервизора;
3. обнуляет бит PIE регистра status, тем самым запрещая все дополнительные внешние прерывания;
4. сохраняет адрес команды, следующей после инструкции, во время выполнения которой возникло исключение, в регистре ea (r29);
5. передаёт управление по адресу обработчика исключений, задачей которого является определения источника прерывания и его обработка.
Адрес обработчика исключений задается при генерации процессорной системы в SOPC Builder, и он не может быть изменен после этого момента.
Программная ловушка
|
|
Программное исключение возникает при выполнении в программе инструкции trap. Эта инструкция сохраняет адрес следующей команды в регистре ea. После чего, она запрещает все прерывания и передает управление обработчику. Последней инструкцией в обработчике должна быть команда eret, которая возвращает управление программе, во время выполнения которой возникло прерывание, а также восстанавливает содержимое регистра состояния процессора.
Чаще всего программную ловушку используют для передачи управления другой программе, например, процедуре операционной системы.