В настоящее время я изучаю язык ассемблера с помощью M68000, и мне трудно понять, как использовать инструкции TRAP с 5 по 13. Кажется, я не могу найти какие-либо примеры в Интернете, когда кто-то создает свои собственные инструкции TRAP. Например, как бы вы написали простую инструкцию TRAP # 6 для переключения состояния процессора. (состояние пользователя или состояние супервизора).Создание собственного обработчика исключений TRAP?
ответ
Написание обработчика ловушки не является тривиальным, и особенно режим переключения привилегий является волосатым (поскольку он не просто изменяет режим привилегий, но также переключает между двумя или тремя указателями на стек, которые имеют процессор: USP/MSP/ISP).
Следующее препятствие состоит в том, что каждый член семейства 68K использует свой собственный набор кадров стека, что означает то, что нажимается на SSP, отличается в зависимости от реальной модели ЦП (68000 является «худшим» нарушителем, поскольку исходный набор стеков фреймы не имеют поля идентификации, в отличие от более высокой модели, которая имеет общее слово индикатора формата кадра). Форматы кадров в стопках описаны в руководстве M68K Familiy, которое вы можете найти в Интернете.
Третья проблема - фактически установить ваш обработчик. Вам нужно найти вектор для ловушки в памяти, который можно переместить на на любой адрес во всех 68K CPU, кроме 68000 через регистр VBR. Не говоря уже о том, что вы не можете получить доступ к VBR в пользовательском режиме.
В-четвертых, векторы-ловушки почти всегда находятся под управлением ОС, поэтому изменение вектора ловушки может нарушить работу системы. Пользовательские ловушки-векторы могут поддерживаться или не поддерживаться с помощью специальных средств ОС.
Для рабочей демонстрации для только 68000 вы можете найти номер вектора и формат кадра стека из руководства по семейству и просто указать этот вектор на свой собственный код. Я предлагаю начать с чего-то тривиально простого, например, просто изменить значение регистров в обработчике ловушки, а затем подтвердить, что оно работает, прежде чем пытаться выполнять трюки, такие как изменения привилегий.
Если вы работаете на голом металле, убедитесь, что ваш стек супервизора правильно инициализирован. – tofro
- 1. Сохранять обработку исключений Xdebug при использовании собственного обработчика исключений
- 2. пользовательского обработчика исключений
- 3. Поиск обработчика исключений C#
- 4. Использование собственного обработчика ошибок страницы
- 5. Какова цель создания собственного класса исключений
- 6. Создание настраиваемого обработчика исключений для решения квадратичной формулы
- 7. Создание собственного собственного пользовательского бара
- 8. если условие против обработчика исключений
- 9. обработчика исключений не ловит исключение
- 10. Trigger ошибка внутри обработчика исключений
- 11. Вручную добавление векторного обработчика исключений
- 12. JIT-эд Реализация обработчика исключений
- 13. Регистрация обработчика для необработанных исключений
- 14. Ошибка VBA в вызове функции sql escapes trap trap
- 15. Android: Написание собственного «обработчика» для аппаратной клавиатуры?
- 16. Connect сигнал собственного обработчика в JavaScript
- 17. Поймав сигнал внутри своего собственного обработчика
- 18. Использование собственного обработчика для JQuery Oembed
- 19. Есть ли способ временно отключить исключения в Delphi 5 IDE без реализации собственного обработчика исключений?
- 20. Создание моего собственного картографа
- 21. создание собственного расширения файла
- 22. Создание собственного «SeekBar»
- 23. Создание собственного заголовка DICOM
- 24. Android - Создание собственного календаря
- 25. создание собственного метода titleize
- 26. Проблема Создание собственного LinkedList
- 27. Создание собственного языка
- 28. Создание собственного класса Ruby
- 29. создание собственного pow()
- 30. Создание собственного метода?
, пожалуйста, отправьте свой пример кода, если у вас есть вопрос – Sachith