2013-05-30 38 views
3

我明天考試,其中一門課程是大會例外。我有他們的清單,但我一直無法找到一個簡單的解釋,什麼是例外,什麼時候發生。對異常的簡單解釋?

例外包括:

  1. 區違反
  2. 司由0(這個人是顯而易見的)
  3. 無效指令
  4. 無效地址
  5. 缺點

任何在fo會有很大的幫助,我只需要大致瞭解每個人是什麼。

+0

你的意思是「訪問衝突」 –

+1

因爲幾乎下的每一個編程語言陽光有例外,你可以閱讀谷歌的前10萬次點擊查看「例外」,以瞭解它們是什麼。 – 7stud

+0

可能是,我剛剛從西班牙語翻譯清單,所以可能會有一些不準確的地方 – lisovaccaro

回答

3

通常情況下,代碼按照指令流動。所以當你閱讀程序時,你可以看到每條指令在一個接一個地跟隨着。 CPU遵循這個列表。現在正如名稱所示,一個例外會中斷這個執行流程。你已經舉了一些例子。每當發生正常的指令流不能繼續並且必須處理的情況時,就會執行執行。因此,異常基本上是一種通知操作系統或程序員的方式,以避免某些事情發生。這可能是代碼中的錯誤,也可能是故意的。

例如,零除是一個錯誤。訪問無效指針也可能是一個錯誤,但它也可能是操作系統從磁盤交換內存頁面的觸發器。程序停止運行,操作系統確保頁面被加載,然後重置代碼以繼續運行,就好像沒有什麼不好的事情發生一樣。

例外是相當類似的中斷,因爲他們打破了節目的正常流動,必須進行維修,往往你不知道何時會發生完全相同。

3

嚴格地說,你指的例外是不是在彙編語言,但在CPU的操作行爲。

概念上講,一個CPU具有一組狀態寄存器,消耗的指令流,並且根據這些指令操縱狀態。現在,這個流包含操縱狀態的指令(例如,將1添加到寄存器EAX)和改變未來指令流的指令(例如JMP topOfLoop)。

異常就像一個隱含的跳轉。例如,如果當前指令是DIV且除數爲零,則CPU可以中止該指令,而是跳轉到不同的指令流,即所謂的異常處理程序。這很有用,因爲異常處理程序可以從不良狀態中恢復。此外,每個指令可能會觸發許多不同類型的異常(內存錯誤,保護錯誤,操作數錯誤,模式錯誤,對準誤差等),這將是麻煩明確寫指令,以檢查這些所有條件。

0

您也可以查找在一般interrupts。列表中的這些例外只是軟件中斷的例子。

0

當處理器不能繼續正常執行程序,基本上有一個例外運行程序的能力。因此,理想情況下,它會轉到一個異常處理程序,其他一些代碼與用於處理異常的中斷處理程序非常相似。像中斷處理程序一樣,有人必須編寫該代碼以及編寫該應用程序的人員。除以零是顯而易見的,無效指令也是如此,當找到的位模式與處理器支持的指令(機器碼)不匹配時,則處理器無法繼續。內存故障,當內存系統由於某種原因無法讀取或寫入內存位置(例如,ECC多位錯誤或無效地址)時。

並非所有處理器都有例外,有的乾脆都有中斷,這是它的「例外程序的正常執行」 ......