2016-11-22 66 views
1

我目前在學習使用M68000的彙編語言,並且無法確定如何使用TRAP 5至13指令。我似乎無法在網上找到有人創建自己的TRAP說明。例如,如何編寫一個簡單的TRAP#6指令來切換處理器的狀態。 (用戶狀態或主管狀態)。創建您自己的TRAP異常處理程序?

+0

請張貼您的示例代碼,錯誤如果您有問題 – Sachith

回答

3

編寫陷阱處理程序並不是微不足道的,尤其是切換特權模式是毛茸茸的(因爲它不僅改變了特權模式,而且還在CPU具有的兩個或三個堆棧指針之間切換:USP/MSP/ISP)。

下一個障礙是,每個68K家庭成員都使用自己的堆棧框架,這意味着推入SSP的內容因實際CPU型號而異(68000是「最差」的違規者,因爲原始堆棧幀不具有標識字段,不同於具有通用幀格式指示字的較高型號)。 堆棧幀格式記錄在M68K Familiy手冊中,您可以在網上找到它。

第三個問題是實際安裝處理程序。您必須在存儲器中找到陷阱向量,除68000以外的所有68K CPU通過VBR寄存器可以將其重定位到任意地址。更不用說你不能在用戶模式下訪問VBR了。第四,陷阱向量幾乎總是在操作系統控制之下,所以改變陷阱向量可能會破壞系統。用戶陷阱向量可能會或可能不會通過操作系統特定手段得到支持

對於的工作演示只需 68000,您可以從家庭手冊中查找矢量編號和堆棧幀格式,並將該矢量指向您自己的代碼。我建議從一些簡單的事情開始,例如只更改陷阱處理程序中的寄存器值,然後在嘗試特權更改等特技之前確認它是否有效。

+0

如果您正在使用裸機,請確保您的主管堆棧已正確初始化。 – tofro