2013-07-16 2 views
1

Я изучаю инструкцию ловушки, но для меня она имеет мало смысла и выглядит как throws exception на Java или, похоже, она похожа или что она делает? Он просто говорит, что команда TRAP всегда генерирует исключение, почему я хочу это сделать? Для меня недостаточно информации, чтобы понять, почему и где я хочу использовать TRAP.Почему я хочу использовать инструкцию TRAP?

enter image description here

+1

Вы не обязательно будете использовать его явно. Они часто используются для специальных целей: http: //eli.thegreenplace.net/2011/01/27/how-debuggers-work-part-2-breakpoints/ – lurker

+0

Я не уверен, что это вопрос, связанный с FPGA, это проблема с ПО, и я думаю, вы должны удалить из нее флаг FPGA. – FarhadA

ответ

1

Чтобы понять это, вам нужно понять разницу между аппаратными и программными прерываниями.

Аппаратные прерывания: Для обработки асинхронных событий, таких как IO и аппаратные таймеры, процессоры используют прерывания. Аппаратное прерывание заставляет CPU останавливать свое текущее выполнение, сохранять состояние (например, регистры и т. Д.) И переходить на предопределенный адрес, где расположена процедура обработчика прерывания. Когда обработчик заканчивает свою работу, процессор возобновляет выполнение с того места, где он останавливается, восстанавливая сохраненное состояние.

Программное обеспечение Прерывания aka Ловушки aka Исключения: ЦП поддерживают специальные инструкции, которые позволяют программному обеспечению имитировать прерывание. Когда такая инструкция выполняется, процессор обрабатывает ее как аппаратное прерывание, то есть останавливает его нормальный поток выполнения, сохраняет свое состояние и переходит к процедуре обработчика. Такие «ловушки» используются для реализации многих функций, таких как планирование задач, виртуальная память, защита памяти, отладка .....

Надеюсь, это поможет.

Забыл часть исключения вопроса: некоторые ошибки программирования (например, деление на 0) также обрабатываются ЦП в качестве ловушек и часто называются «исключениями».

2

Я изучал, как TRAP работа в PDP-11, и хочу поделиться с вами:

Ловушка может помочь вам с

  1. Сохранение текущих регистров (включая PC/PS) в стек, обновить SP (указатель стека)
  2. Установить ПК (следующий адрес прибора) на обработчик TRAP
  3. Установить PS (регистр статуса) в TRAP sta ЕП

Вы можете обратиться к этому образу, https://github-camo.global.ssl.fastly.net/3e636f86530380760fcc784c3178d40723d55a44/687474703a2f2f696b6172697368696e6a696576612e6769746875622e696f2f756e697856362d636f64652d616e616c797a652d6368732f696d616765732f50647031315f696e737472756374696f6e5f545241502e706e67 (Извините, что мне нужно 10 репутации, чтобы загрузить изображение ...) (Китайский символ в изображении означает «Стек»)

TRAP является обеспечение процессор -ключевая защита контекстного переключателя, что означает, что TRAP может сохранять регистры, переключиться на безопасный запуск с другого кода и может вернуться, потому что старый ПК/PS был сохранен в стеке. Это похоже на вызов функции, но не исключение.

В UnixV6, TRAP используется в основном для ручки Hardward интервала, как часы интервал (KW11-L), сбои питания интервал, и т.д. ...

Я не уверен, если это может помочь по вашей проблеме в FPGA, просто игнорируйте меня, если это не так ...

Спасибо.

Смежные вопросы