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