我目前在學習使用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. 使用自己的異常處理程序時保留Xdebug異常處理
- 2. Hadoop創建您自己的程序
- 3. 創建您自己的HRESULT?
- 4. 創建自己的wurfl異常
- 5. 創建自己的檢查異常
- 6. asp.net自定義處理程序異常?
- 7. RouteBuilder.onException是否創建全局異常處理程序或路由特定的異常處理程序?
- 8. 如何使用企業庫異常處理創建自定義異常處理程序塊
- 9. 在全局異常處理程序中處理線程異常?
- 10. Java:異常處理程序
- 11. 異常處理程序
- 12. 未處理的異常發生在您的應用程序C#
- 13. 創建二次公式求解器的自定義異常處理程序
- 14. 如何在Struts2中創建自定義的異常處理程序類
- 15. php:在異常處理程序中處理異常?
- 16. 如何處理XmlReader的異常。創建
- 17. 如何在DLL中創建全局異常處理程序?
- 18. 如何爲WCF服務創建全局異常處理程序?
- 19. 如何使用自定義異常處理程序處理javax.el.PropertyNotFoundException
- 20. 使用程序集c中的異常自我處理程序
- 21. 停止自己的處理程序
- 22. Android創建您自己的菜單
- 23. 何時創建您自己的IEnumerable類
- 24. 創建您自己的PayPal請求
- 25. 創建您自己的ADDED_TO_STAGE事件
- 26. magento:創建您自己的收藏
- 27. 創建您自己的Keras優化器
- 28. 創建您自己的系統顏色
- 29. 創建您自己的語言
- 30. std ::線程創建的線程沒有處理異常
請張貼您的示例代碼,錯誤如果您有問題 – Sachith