2013-06-30 16 views
1

這是一個來自測試的問題。可能的答案是:「調試中斷」和int 80h有什麼區別?

(a) Debug interrupt is always caused by an error, and int 80h isn't. 
(b) Only on int 80h the returning address is saved. 
(c) int 80h is always caused by an error and debug interrupt isn't. 
(d) None of the above. 

我唯一積極的是(c)是錯的。

任何人都可以闡明兩者之間的差異?

+0

我不知道「調試中斷」是什麼,對於那個術語我沒有意識到這個標準含義。什麼'int 80h'確實是操作系統特定的。 – interjay

+0

我猜「調試中斷」,OP意味着「int 3h」。另外,我可以向你保證,(b)也是錯誤的,因爲* any *中斷保存了返回地址 –

+0

@DrewMcGowen:它也可以指向'int 1',或者指向一個異常中斷,如頁面錯誤或除以零。 – interjay

回答

3

調試中斷總是由錯誤引起的,INT 80H是不

調試中斷幾乎總是故意在代碼插入。無論是使用內聯彙編,代碼中的內部函數(如__debugbreak)還是調試器使處理器在語句開始時調用調試中斷。通過int 03h在x86和x64處理器上編碼的方式強烈啓用,它是一個需要單個字節(CCh)的指令,因此調試器很容易插入。 INTO是另一個古怪的球,剩下的就是兩個字節。與錯誤無關,所以不。只有在INT 80H的返回地址

保存

處理器把所有的軟件中斷以同樣的方式,中斷號只是選擇中斷處理程序。 Int 03h還在堆棧中存儲返回地址,因此不會。

INT 80H總是由一個錯誤引起的調試中斷不

這完全依賴於操作系統的INT 80H可以做什麼上。但是這幾乎肯定是指Linux,它使用int 80h轉換到內核模式以調用低級操作系統函數。那些當然不是錯誤,所以不是。

哪個葉子(d)以上都不是。

相關問題