【问题标题】:Difference between TRAP , software interrupts and hardware interrupts?TRAP,软件中断和硬件中断之间的区别?
【发布时间】:2017-05-25 18:54:12
【问题描述】:

我只是想知道它们之间的基本区别。

我在某些地方发现 TRAP 本质上也称为软件中断,或类似异常的东西。

还有什么是软件中断和异常之间的基本区别。

INT指令可以产生软件中断,但是TRAP只能在某些情况下产生,例如被零除?对吗?

请给这个查询一个合适的答案,包括s/w中断陷阱和异常。

【问题讨论】:

  • 我们不是查询的地方,也不是讨论网站。
  • 卡车或卡车,背带或吊带,假期或假期。我们当然可以添加其他人。一家公司的一组人使用一个或一组术语。陷阱、异常、中断等 数据表、数据手册、参考手册、用户手册、程序员参考手册、技术参考手册等 不要太拘泥于某个特定的词,只要在你的脑海中翻译,有人问你厕所在哪里你是指他们上厕所吗?
  • 在阅读特定的数据表或一些命名手册时,使用单词周围的上下文,您可以发现芯片供应商或手册作者正在使用一个特定的术语,并希望始终坚持使用它。例如,您将看到 arm 同时使用异常和中断,其中一些异常来自外围(内核外部)中断,而一些异常是内部的,例如未定义的指令,因此在这种情况下,它们都是由异常表地址处理的异常( cortex-m) 但有些来自硬件中断。

标签: embedded microcontroller interrupt interrupt-handling interrupted-exception


【解决方案1】:

术语确实有点模糊,可能取决于 CPU 供应商。

清楚的是,硬件中断是由硬件信号触发的,使 CPU 进入预定义的 ISR。这些是由(通常是外部的)硬件触发的异常。

trap 的符号因 CPU 供应商而异。非 Intel CPU 上的陷阱可以(例如,在 68000 或 PowerPC CPU 上)是软件中断。这些 CPU 有一条 TRAP 指令。在 x86 上,该指令将是 INT xxx,在 ARM CPU SWI/SVC 上,在 PowerPC TRAP #xx 上。这将是用户程序故意触发的异常(通常用于进入操作系统)

英特尔世界中的陷阱是异常情况,例如被零除或其他错误,例如无效的内存访问(但也可能由设置的单步标志触发)。其他 CPU 供应商简单地将其称为异常。这些异常通常是由错误的程序或 CPU 在正常程序流程中无法处理的条件触发的。

所有这些通常都称为异常

【讨论】:

  • 感谢您的回复,它提供了丰富的信息,但是我想指出一个观点的变化。软件中断和 TRAP 都是例外,但是软件中断是由软件引起的中断,通常由用户模式下的程序通常通过 INT 指令或其他一些指令创建,而 TRAP 是用户进程中的异常。这是由零除或无效的内存访问引起的。这也是调用内核例程(系统调用)的常用方法,因为它们的运行优先级高于用户代码。
  • @Emil.Thomas(我不知道我写了一些不同的东西)这是英特尔的术语。但是,正如答案中指出的那样,还有其他一些。你评论的最后一部分很奇怪。指令没有优先执行 - 但是,它们可能会将处理器状态提升到更高的特权级别,这可能会导致可以访问更多/其他内存和 I/O(如 INT确实)而不触发异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多