Я изучаю инструкцию ловушки, но для меня она имеет мало смысла и выглядит как throws exception
на Java или, похоже, она похожа или что она делает? Он просто говорит, что команда TRAP
всегда генерирует исключение, почему я хочу это сделать? Для меня недостаточно информации, чтобы понять, почему и где я хочу использовать TRAP
.Почему я хочу использовать инструкцию TRAP?
ответ
Чтобы понять это, вам нужно понять разницу между аппаратными и программными прерываниями.
Аппаратные прерывания: Для обработки асинхронных событий, таких как IO и аппаратные таймеры, процессоры используют прерывания. Аппаратное прерывание заставляет CPU останавливать свое текущее выполнение, сохранять состояние (например, регистры и т. Д.) И переходить на предопределенный адрес, где расположена процедура обработчика прерывания. Когда обработчик заканчивает свою работу, процессор возобновляет выполнение с того места, где он останавливается, восстанавливая сохраненное состояние.
Программное обеспечение Прерывания aka Ловушки aka Исключения: ЦП поддерживают специальные инструкции, которые позволяют программному обеспечению имитировать прерывание. Когда такая инструкция выполняется, процессор обрабатывает ее как аппаратное прерывание, то есть останавливает его нормальный поток выполнения, сохраняет свое состояние и переходит к процедуре обработчика. Такие «ловушки» используются для реализации многих функций, таких как планирование задач, виртуальная память, защита памяти, отладка .....
Надеюсь, это поможет.
Забыл часть исключения вопроса: некоторые ошибки программирования (например, деление на 0) также обрабатываются ЦП в качестве ловушек и часто называются «исключениями».
Я изучал, как TRAP работа в PDP-11, и хочу поделиться с вами:
Ловушка может помочь вам с
- Сохранение текущих регистров (включая PC/PS) в стек, обновить SP (указатель стека)
- Установить ПК (следующий адрес прибора) на обработчик TRAP
- Установить PS (регистр статуса) в TRAP sta ЕП
Вы можете обратиться к этому образу, https://github-camo.global.ssl.fastly.net/3e636f86530380760fcc784c3178d40723d55a44/687474703a2f2f696b6172697368696e6a696576612e6769746875622e696f2f756e697856362d636f64652d616e616c797a652d6368732f696d616765732f50647031315f696e737472756374696f6e5f545241502e706e67 (Извините, что мне нужно 10 репутации, чтобы загрузить изображение ...) (Китайский символ в изображении означает «Стек»)
TRAP является обеспечение процессор -ключевая защита контекстного переключателя, что означает, что TRAP может сохранять регистры, переключиться на безопасный запуск с другого кода и может вернуться, потому что старый ПК/PS был сохранен в стеке. Это похоже на вызов функции, но не исключение.
В UnixV6, TRAP используется в основном для ручки Hardward интервала, как часы интервал (KW11-L), сбои питания интервал, и т.д. ...
Я не уверен, если это может помочь по вашей проблеме в FPGA, просто игнорируйте меня, если это не так ...
Спасибо.
- 1. Почему я хочу использовать ExpressionVisitor?
- 2. Почему я хочу использовать jQuery?
- 3. Почему я хочу использовать POCO?
- 4. Когда/почему я хочу использовать Groovy @CompileStatic?
- 5. Я хочу использовать указатель
- 6. Где я должен использовать эту инструкцию?
- 7. Должен ли я использовать инструкцию goto здесь?
- 8. Как я могу использовать инструкцию SSE?
- 9. Как использовать инструкцию RAISEERROR?
- 10. Я хочу вычислить sql-инструкцию для сложной структуры данных
- 11. Транспортир - я хочу написать инструкцию IF ELSE DRYer, если возможно
- 12. Учитывая инструкцию SELECT, я хочу получить результат RECIPE_ID несколькими подзапросами?
- 13. Создание собственного обработчика исключений TRAP?
- 14. Я хочу использовать функцию щелчка
- 15. Когда я хочу использовать NSPropertyMapping?
- 16. Я хочу использовать javax jms
- 17. Я хочу использовать диалог There.is.already.a.file.with.the.same.name
- 18. Я хочу настроить infowindow googlemap Я не хочу использовать infobubble
- 19. Что такое MQ и почему я хочу его использовать?
- 20. Что такое семантическая сеть и почему я хочу ее использовать?
- 21. Почему я хочу использовать настраиваемый RNG для массива # shuffle?
- 22. Почему я хочу продолжать использовать Nant, когда MSBuild доступен?
- 23. Почему я хочу использовать gridview в devexpress, а не asp.net?
- 24. Почему я хочу использовать кодовые контракты в публичных методах?
- 25. Почему я хочу использовать Android-расширение «Развернуть булевское» намерение?
- 26. Что такое семантическая разметка и почему я хочу ее использовать?
- 27. Почему django использует sqlite3, когда я хочу использовать postgresql
- 28. Почему я хочу использовать шкалу единиц измерения? (Libgdx)
- 29. Почему я хочу использовать VOLUME внутри файла Docker?
- 30. Почему я хочу использовать DialogFragments над регулярными фрагментами в Android?
Вы не обязательно будете использовать его явно. Они часто используются для специальных целей: http: //eli.thegreenplace.net/2011/01/27/how-debuggers-work-part-2-breakpoints/ – lurker
Я не уверен, что это вопрос, связанный с FPGA, это проблема с ПО, и я думаю, вы должны удалить из нее флаг FPGA. – FarhadA