据我了解,中断有软件中断和硬件中断之分。软件中断包括异常和陷阱,其中陷阱是显式调用的(例如系统调用的情况),异常是隐式调用的(例如除0、缺页等情况)
我说得对吗? 陷阱仅用于系统调用吗?
我读过的所有解释似乎都互相矛盾。
没有一致的术语。不同的架构/供应商使用这些词来表示不同的事物。
例如,在 Motorola 68000 上,陷阱是由
trap
或 trapv
指令调用的异常。正如您所说,它们被明确调用,但是它们仍然被视为异常 - 因为摩托罗拉将所有中断称为“异常”。
在 x86-64 上,异常是前 32 个保留中断 - 它们可以由 CPU 隐式调用。它们进一步分为陷阱、故障和中止: