中止异常 "does not permit precise location of the instruction causing the exception" 是什么意思?

What does it mean that an abort exception "does not permit precise location of the instruction causing the exception"?

摘自英特尔 80386 程序员参考手册,CH9:

Exceptions are classified as faults, traps, or aborts depending on the way they are reported and whether restart of the instruction that caused the exception is supported.

Aborts: An abort is an exception that permits neither precise location of the instruction causing the exception nor restart of the program that caused the exception. Aborts are used to report severe errors, such as hardware errors and inconsistent or illegal values in system tables.

(强调我的)

中止是不允许精确定位导致异常的指令的异常,这究竟意味着什么?

只有 2 个“中止”异常:

a) 双故障异常。当尝试启动一个异常导致第二个异常时会发生这种情况;其中指令指针(在启动双重故障异常处理程序时由 CPU 保存)可能来自原始指令、第一个异常、第二个、其他内容或什么都没有。在这种情况下,因为 CPU 无法启动第一个或第二个异常处理程序,所以无论如何都不能 return 从双重故障到第二个(或第一个)异常处理程序。

b) 机器检查异常。这纯粹是针对硬件故障,您可能不想假设内存、缓存或 CPU 实际工作。您不能指望故障硬件会产生“保证行为”。

注1:从技术上讲,对于某些机器检查的原因,您可以return精确定位到任何被异常中断的地方;你只需要非常小心地确定你是否 can/can 不是 return(并且需要一些方法来 fix/work-around 硬件 problem/s 以便 return 从机器检查异常处理程序不会触发第二个机器检查异常。

注意 2:双重故障或机器检查之前的异常完全有可能是由根本不是指令的东西引起的(例如由 IRQ 引起)。在这些情况下,“导致异常的指令的精确位置”将是“不存在的东西的精确位置”。英特尔的话应该被解释为有条件的(比如“一个异常,如果有的话,既不允许精确定位导致异常的指令,也不允许重新启动导致异常的程序”)。