全部博文(42)
分类:
2010-10-21 16:04:59
(1) 由与指令流无关的事件引起的异常是中断陷阱,因此不准确。
这四种情况是依赖于实现的,如果另一个浮点型异常目前被推迟,就会努力执行浮点型调用指令,或引起特殊的fp异常陷阱。同样,如果协处理器异常目前被推迟,就会努力执行另一个调用特别的cp异常陷阱的协处理器指令。
执行说明
当不可恢复机器检查异常发生时,会引起延时陷阱或中断陷阱,为了提供终止用户进程的能力,操作应提供一个或更多能调用特殊情况的指令作为陷阱。例如:通过执行任何FPop(加载或存储浮点型指针包括STFSR)或FBfcc指令,特殊浮点型异常被调用产生fp异常陷阱。
增强型的陷阱模型
用户应用程序不能发现陷阱,除非他们明确要求来处理它们。因此,SPARC用增强的陷阱类型,为默认模型提供了依赖于实现的性能增强。其中,默写陷阱可能被谈事或中断,而不精确。
具体来说,特定陷阱是否必须精确,取决于用户使用程序是否请求监管程序和处理产生中断的特定异常的能力。用户陷阱处理寄存器请求指出,当特定陷阱发生时,监管程序将返回由程序指定的预定地址控制用户应用程序。
SPARC增强陷阱模型指出,如果用户应用程序用监管程序安装了用户陷阱处理器,特定的陷阱必须坚持以默认的陷阱模型。
因此,异常必须能够在硬件中被生成以下陷阱:
(1) 精密陷阱
(2) 浮点型或协处理器异常引起的延时陷阱
(3) 依赖于实现的不可恢复的机器检查异常,引起的延时陷阱或中断陷阱。
如果用户应用程序没有为特定的陷阱安装陷阱处理器,陷阱将是延时或中断陷阱。为特定的程序和类型相关的异常事件,特定陷阱类型必须保持不变。
因此,如果用户程序为特定的陷阱,建立了自己的陷阱处理器,必须在程序中那个陷阱的第一次异常事件之前,就安装。
访问硬件状态的指令必须是优先级指令,来控制特定陷阱是否精确。
编程注意
对监管程序和寄存器的请求,用户陷阱处理器指出,相关的异常将被用户程序以不可恢复的方式处理。在这种情况下,监管程序可以选择引起相关的陷阱是不准确的。
精密陷阱产生后,监管程序可以:
(1) 返回引起陷阱的指令,重新执行它,PC-old PC,nPC-old nPC。