Прерывание посредством ловушки в ЭВМ PDP-11
Итак, инициализировав процесс прерывания, как правило, не думается об аппаратной логике прерывания. Центральный процессор (ЦП) может ожидать запроса на прерывание в любой момент, но точное время запроса он знать не может. Этот класс прерываний известен как внешние или аппаратные прерывания, когда идентификация источника прерывания или адрес уникального вектора прерываний обеспечивается аппаратурой ввода-вывода через шину данных.
В системе PDP-11 существует возможность прерываний другого типа – система, кроме аппаратных прерываний, обеспечивает возможность ловушек, когда при возникновении аномальной ситуации, такой как недопустимая инструкция, сброс питающего напряжения или обращение к несуществующей ячейке памяти, система попадает в ловушку через вектор ловушки с уникальным адресом. Подобно вектору прерываний вектор ловушки состоит из двух слов памяти, содержимым которых являются соответственно стартовый адрес подпрограммы обслуживания ловушки и содержимое PSW для этой подпрограммы. Подпрограмма обслуживания ловушки может содержать всего одну инструкцию, такую как HALT, или последовательность инструкций для вывода сообщения об ошибке для информации пользователя о событии, происшедшем при выполнении программы. Поэтому процесс перехода к ловушке рассматривается как внутреннее или программное прерывание.
Когда происходит переход к ловушке, ЦП (аппаратно) проталкивает в стековую память содержимое слова состояния PSW для главной программы и скорректированное содержимое регистра PC и помещает к регистру PC стартовый адрес подпрограммы обслуживания ловушки, а в слово состояния PSW – ранг приоритета прерывания. В конце подпрограммы обслуживания ловушки инструкция RTI выталкивает сохраненную в стеке информацию назад, что обеспечивает возврат к главной программе.
В противоположность процессу внешнего прерывания адрес вектора ловушки для каждого внутреннего прерывания заранее предопределен, так что пользователь не может изменить его по своему желанию.
Доступны ловушки, соответствующие инструкциям ВРТ, IOТ, ЕМТ и TRAP. Если пользователь хочет разрабатывать или использовать свои собственные подпрограммы обслуживания ловушек, на инструкции ЕМТ и TRAP следует обратить особое внимание. Дело в том, что в векторах 30 и 34 находятся не стартовые адреса подпрограмм обслуживания ловушки, а стартовые адреса подпрограмм специального назначения, называемых TRАР-манипуляторами. Через такие манипуляторы, приобрести которые можно приобрести на сайте beneris.com.ua/manipulyatory.html вызываются специализированные подпрограммы обслуживания ловушки.
У инструкций ЕМТ и TRAP имеется операнд, представляющий собой целое число. Инструкция ЕМТ используется обычно в системном программном обеспечении, что позволяет разработать до 3778 системных подпрограмм обслуживания, и пользователям не рекомендуется ее применять. Для общих целей предназначена инструкция TRAP.