我只是想知道它们之间的基本区别。
我在某些地方发现TRAP本质上也被称为软件中断,或类似异常。
软件中断和异常之间的基本区别是什么。
INT指令可以生成软件中断,但TRAP只能通过除零等特定场景生成?是吗?
请为此查询提供合适的答案,其中包括:s / w中断陷阱和异常。
答案 0 :(得分:5)
术语确实有点模糊,可能取决于CPU供应商。
显而易见的是,硬件中断由硬件信号触发,并使CPU进入预定义的ISR。这些是由(通常是外部)硬件触发的异常。
陷阱的表示法在CPU供应商之间有所不同。非Intel CPU上的陷阱可以(例如在68000或PowerPC CPU上)是软件中断。那些CPU有一个TRAP指令。在x86上,该指令在PowerPC TRAP #xx上的ARM CPU SWI / SVC上为INT xxx。这将是由用户程序(通常用于进入操作系统)故意触发的例外
英特尔世界中的陷阱是异常情况,例如除以零或其他错误,如无效内存访问(但也可能由设置的单步标志触发)。其他CPU供应商只是称之为异常。这些异常通常由CPU在正常程序流程中无法处理的错误程序或条件触发。
所有这些通常都被称为例外。