Intel异常的分类:错误,陷阱,终止

Posted rtoax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Intel异常的分类:错误,陷阱,终止相关的知识,希望对你有一定的参考价值。

摘自《Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D and 4》

异常被分类为故障、陷阱或中止,这取决于它们的报告方式以及引起异常的指令是否可以重新启动而不会丢失程序或任务的连续性。

  • 故障:故障是一种通常可以纠正的异常,一旦纠正,程序就可以重新启动而不会失去连续性。当报告故障时,处理器将机器状态恢复到故障指令开始执行之前的状态。故障处理程序的返回地址(CS 和 EIP 寄存器中保存的内容)指向故障指令,而不是故障指令之后的指令。
  • Traps:陷阱是在执行陷阱指令后立即报告的异常。陷阱允许继续执行程序或任务而不会失去程序连续性。陷阱处理程序的返回地址指向陷阱指令之后要执行的指令。
  • 中止:中止是一种异常,它并不总是报告导致异常的指令的精确位置,并且不允许重新启动导致异常的程序或任务。中止用于报告严重错误,例如硬件错误以及系统表中的不一致或非法值。

通常报告为故障的异常子集不可重新启动。 此类异常会导致某些处理器状态丢失。 例如,执行堆栈帧越过堆栈段末尾的 POPAD 指令会导致报告错误。 在这种情况下,异常处理程序看到指令指针 (CS:EIP) 已恢复,就好像尚未执行 POPAD 指令一样。 但是,内部处理器状态(通用寄存器)将被修改。 这种情况被认为是编程错误。 引起此类异常的应用程序应由操作系统终止。

以上是关于Intel异常的分类:错误,陷阱,终止的主要内容,如果未能解决你的问题,请参考以下文章

异常处理的返回

异常处理

使用陷阱终止bash中的函数

Java基础——异常

软件调试——CPU异常列表

由于未捕获的异常“NSInternalInconsistencyException”错误而终止应用程序