Обработка исключений

Исключением называется нарушение естественного хода выполнения программы. Исключение может возникнуть в следующих случаях:

· программная ловушка;

· аппаратное прерывание;

· нереализованная инструкция.

В случае возникновения исключения процессор Nios II выполняет следующую последовательность действий:

1. сохраняет текущее состояние процессора, путем копирования содержимого регистра status (ctl0) в регистр estatus (ctl1);

2. обнуляет бит U регистра status, переводя тем самым процессор в режим супервизора;

3. обнуляет бит PIE регистра status, тем самым запрещая все дополнительные внешние прерывания;

4. сохраняет адрес команды, следующей после инструкции, во время выполнения которой возникло исключение, в регистре ea (r29);

5. передаёт управление по адресу обработчика исключений, задачей которого является определения источника прерывания и его обработка.

Адрес обработчика исключений задается при генерации процессорной системы в SOPC Builder, и он не может быть изменен после этого момента.

Программная ловушка

Программное исключение возникает при выполнении в программе инструкции trap. Эта инструкция сохраняет адрес следующей команды в регистре ea. После чего, она запрещает все прерывания и передает управление обработчику. Последней инструкцией в обработчике должна быть команда eret, которая возвращает управление программе, во время выполнения которой возникло прерывание, а также восстанавливает содержимое регистра состояния процессора.

Чаще всего программную ловушку используют для передачи управления другой программе, например, процедуре операционной системы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: