2017-05-14 105 views
0

我最近一直在學習程序集,我似乎無法理解異常是如何工作的。更具體地說,我收到異常6發生並被忽略的消息。有人能解釋一下這到底是什麼意思?我正在使用qtspim。MIPS異常它們是什麼意思

+0

經過幾秒鐘的谷歌搜索,看起來這是一個模擬器(spim)的東西來幫助你,我看到的少數幾個東西是真正的硬件將/應該掛在上面。未對齊的訪問,在該地址空間外獲取指令等。基本上,您的代碼中存在一個錯誤,請查找它。我不太瞭解spim,知道它是否告訴你發生了什麼(發生了什麼指令或地址等),是否有一個功能可以在故障點停止/掛起/崩潰而不是忽略並嘗試繼續? –

回答

0

異常可能是由硬件或軟件造成的。異常就像跳轉到新地址的非調度函數調用。 該程序可能會遇到一個錯誤條件,如 未定義的指令。程序然後跳轉到操作系統(OS)中的代碼,該操作系統可以選擇終止程序。異常的其他原因除以零,嘗試讀取一些不存在的內存,硬件故障,調試器斷點和算術溢出。

處理器記錄發生異常時的異常原因和PC 的值。然後它跳轉到異常處理函數。異常處理程序是檢查異常原因並正確響應的代碼(通常在OS中),然後返回到發生異常之前正在執行的程序 。

在MIPS中,異常處理程序始終位於0x80000180。發生異常時,無論原因如何,處理器都會跳轉到該指令地址。

該MIPS架構使用一個專用寄存器,稱爲原因 註冊,以記錄異常的原因。

MIPS使用另一個專用寄存器稱爲異常 程序計數器EPC)至PC的值存儲在 異常發生的時間。在 處理異常後,處理器返回到EPC中的地址。這類似於在jal指令中使用$ra來存儲PC的舊 值。

相關問題