1

我只是想知道它們之間的基本區別。TRAP,軟件中斷和硬件中斷之間的區別?

我發現在一些地方,TRAP本質上也被稱爲軟件中斷,或類似的異常。

軟件中斷和異常之間的基本區別是什麼?

軟件中斷可以通過INT指令產生,但TRAP只能通過某些情景產生,如被零除?是對的嗎?

請給這個查詢給出一個合適的答案,它涵蓋了s/w中斷陷阱和異常。

+0

我們不是查詢地點或討論網站。 – Olaf

+0

卡車或卡車,大括號或吊帶,度假或假期。當然,我們可以添加其他人。一家公司的一組人使用一個或一組術語。陷阱,異常,中斷等數據表,數據手冊,參考手冊,用戶手冊,程序員參考手冊,技術參考手冊等。不要太過於掛上特定的詞,只是在腦海中翻譯,別人會問你在哪裏廁所你把他們指向廁所。 –

+0

在閱讀特定數據表或某些命名手冊時,使用上下文周圍的上下文,可以發現芯片供應商或手動作者正在使用某個特定術語,並希望貫穿始終。你會看到arm例如使用異常和中斷,一些異常來自外設(外部到核心)中斷,有些是內部像未定義的指令,所以在這種情況下它們都是由異常表地址處理的異常cortex-m),但有些來自硬件中斷。 –

回答

5

術語確實有點模糊,可能取決於CPU供應商。

很明顯,硬件中斷是由硬件信號觸發的,並使CPU輸入預定義的ISR。這些是由(通常是外部)硬件觸發的異常。

陷阱的符號在CPU廠商之間有所不同。非英特爾CPU 上的陷阱可以是(例如,在68000或PowerPC CPU上)爲軟件中斷。這些CPU具有TRAP指令。在x86上,該指令將在PowerPC TRAP #xx上的ARM CPU SWI/SVC上爲INT xxx。這將是一個用戶程序(通常用於進入操作系統)

陷阱在英特爾全球故意引發一個例外是得天獨厚的條件,如除以零或其他錯誤,如無效的內存訪問(但也可能由一組單步標誌觸發)。其他CPU供應商只是稱其爲例外。這些異常通常由CPU在正常程序流程期間無法處理的錯誤程序或條件觸發。

並且它們通常都被稱爲例外

+0

感謝您的回覆,這是豐富的,但是我想指出一個意見上的變化。軟件中斷和TRAP都是例外,但軟件中斷是由軟件引起的中斷,通常由通過用戶模式創建的程序INT指令或其他指令,而TRAP是用戶進程中的異常。這是由零除或內存訪問無效造成的。這也是調用內核例程(系統調用)的常用方式,因爲它們的優先級高於用戶代碼。 –

+0

@Emil。托馬斯(我不知道我寫了不同的東西)這是英特爾的術語。然而,正如答案中指出的那樣,還有其他人。你評論的最後部分很奇怪。指令不會被執行*具有優先權*但是,它們可能會將處理器狀態提升到更高的權限級別,這可能會導致可以訪問更多/其他內存和I/O(如INT),而不會觸發例外。 – tofro