“调试中断”和int 80h之间有什么区别?

时间:2013-06-30 09:18:57

标签: assembly x86

这是测试中的问题。可能的答案是:

(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)是错误的。

有人能否解释两者之间的差异?

1 个答案:

答案 0 :(得分:4)

  

调试中断总是由错误引起,而int 80h不是

调试中断几乎总是有意插入代码中。使用内联汇编,代码中的内在函数(如__debugbreak)或调试器使处理器在语句开始时调用调试中断。通过int 03h在x86和x64处理器上编码的方式强大启用,它是一个采用单字节(CCh)的指令,因此很容易通过调试器插入。 INTO是另一个奇怪的球,其余的是两个字节。与错误无关,所以没有。

  

仅在int 80h保存返回的地址

处理器以相同的方式处理所有软件中断,中断号仅选择中断处理程序。 Int 03h还将返回地址存储在堆栈中,所以没有。

  

int 80h总是由错误引起,调试中断不是

完全取决于操作系统int 80h可能做什么。但这几乎肯定是指Linux,它使用int 80h转换到内核模式来调用低级操作系统函数。那当然不是错误,所以没有。

哪一个离开(d)以上都不是。