2013-07-16 81 views
1

我研究陷阱指令,但對我來說,它使得它與Java中的throws exception一樣毫無意義並且看起來類似,或者它是類似的還是它有什麼作用?它只是說TRAP指令總是產生一個異常,我爲什麼要這麼做?我沒有足夠的信息來了解我想要使用的原因和位置TRAP我爲什麼要使用TRAP指令?

enter image description here

+1

你不一定明確地使用一個。他們經常用於特殊目的:http://eli.thegreenplace。net/2011/01/27/how-debuggers-work-part-2-breakpoints/ – lurker

+0

我不確定這是否與FPGA相關的問題,這是一個軟件問題,我認爲你應該從中移除FPGA標誌。 – FarhadA

回答

1

要理解這一點,您必須瞭解硬件和軟件中斷之間的差異。

硬件中斷: 爲了處理IO和硬件定時器等異步事件,CPU使用中斷。硬件中斷使CPU停止其當前執行,保存狀態(如寄存器等),並跳轉到中斷處理程序所在的預定義地址。處理程序完成其工作後,CPU通過恢復保存的狀態從停止的位置恢復執行。

軟件中斷又名陷阱又名例外: CPU支持特殊指令,允許軟件模擬中斷。當執行這樣的指令時,CPU將其視爲硬件中斷,即停止其正常執行流程,保存其狀態並跳轉到處理程序例程。這些「陷阱」被用來實現許多功能,如任務調度,虛擬內存,內存保護,調試.....

希望這會有所幫助。

忘記了問題的例外部分:一些編程錯誤(例如除以0)也被CPU視爲陷阱,並且經常被稱爲「異常」。

2

我研究了PDP-11,TRAP工作以及如何想與大家分享:

陷阱可以幫助您與

  1. 保存當前的寄存器(包括PC/PS )更新SP(堆棧指針)
  2. 將PC(下一個儀器地址)設置爲TRAP處理程序
  3. 將PS(狀態寄存器)設置爲TRAP sta土族

也可以參照這一形象,https://github-camo.global.ssl.fastly.net/3e636f86530380760fcc784c3178d40723d55a44/687474703a2f2f696b6172697368696e6a696576612e6769746875622e696f2f756e697856362d636f64652d616e616c797a652d6368732f696d616765732f50647031315f696e737472756374696f6e5f545241502e706e67(對不起,我需要10的聲譽上傳圖片...)(中國人的圖像中人物的意思是「堆棧」)

TRAP是提供處理器級別的上下文切換保護,這意味着TRAP可以保存寄存器,安全地切換到從其他代碼地址運行,並且可以切換回舊PC/PS保存在堆棧中。它就像一個函數調用,但不是例外。

在UnixV6,TRAP主要用於手柄hardward間隔,比如時鐘間隔(KW11-L),電源故障間隔等..

我不知道它是否能幫助在你的問題在FPGA,只是不理睬我,如果它不是...

謝謝。