我目前在學習使用M68000的彙編語言,並且無法確定如何使用TRAP 5至13指令。我似乎無法在網上找到有人創建自己的TRAP說明。例如,如何編寫一個簡單的TRAP#6指令來切換處理器的狀態。 (用戶狀態或主管狀態)。創建您自己的TRAP異常處理程序?
1
A
回答
3
編寫陷阱處理程序並不是微不足道的,尤其是切換特權模式是毛茸茸的(因爲它不僅改變了特權模式,而且還在CPU具有的兩個或三個堆棧指針之間切換:USP/MSP/ISP)。
下一個障礙是,每個68K家庭成員都使用自己的堆棧框架,這意味着推入SSP的內容因實際CPU型號而異(68000是「最差」的違規者,因爲原始堆棧幀不具有標識字段,不同於具有通用幀格式指示字的較高型號)。 堆棧幀格式記錄在M68K Familiy手冊中,您可以在網上找到它。
第三個問題是實際安裝處理程序。您必須在存儲器中找到陷阱向量,除68000以外的所有68K CPU通過VBR寄存器可以將其重定位到任意地址。更不用說你不能在用戶模式下訪問VBR了。第四,陷阱向量幾乎總是在操作系統控制之下,所以改變陷阱向量可能會破壞系統。用戶陷阱向量可能會或可能不會通過操作系統特定手段得到支持
對於的工作演示只需 68000,您可以從家庭手冊中查找矢量編號和堆棧幀格式,並將該矢量指向您自己的代碼。我建議從一些簡單的事情開始,例如只更改陷阱處理程序中的寄存器值,然後在嘗試特權更改等特技之前確認它是否有效。
+0
如果您正在使用裸機,請確保您的主管堆棧已正確初始化。 – tofro
相關問題
- 1. 創建自己的wurfl異常
- 2. 在全局異常處理程序中處理線程異常?
- 3. 異常處理程序
- 4. php:在異常處理程序中處理異常?
- 5. 如何在DLL中創建全局異常處理程序?
- 6. 如何爲WCF服務創建全局異常處理程序?
- 7. 創建您自己的ADDED_TO_STAGE事件
- 8. 創建您自己的系統顏色
- 9. 何時創建您自己的IEnumerable類
- 10. 創建您自己的Keras優化器
- 11. 創建您自己的語言
- 12. magento:創建您自己的收藏
- 13. Android創建您自己的菜單
- 14. 程序流程處理時異常PLSQL
- 15. 默認的.NET異常處理程序
- 16. 在Linux上的異常處理程序
- 17. WPF應用程序的異常處理
- 18. NullPointerException異常處理程序的Android
- 19. 範圍引發異常,處理自己的異常在PLSQL代碼
- 20. 在異常處理程序內部創建的Linux內核線程停止
- 21. 在Xamarin.Android中運行程序導致創建按鈕處理程序中出現未處理的異常
- 22. 如何處理自己方法中的異常
- 23. 春天異常處理程序不處理某些類型的異常
- 24. 自動化異常處理
- 25. 自定義異常處理
- 26. 異常打滑的異常處理程序
- 27. 添加用戶定義的異常和異常處理程序
- 28. 尋找c#異常處理程序
- 29. Laravel 5跳過異常處理程序
- 30. 「全局」異常處理程序
請張貼您的示例代碼,錯誤如果您有問題 – Sachith