单选题 在中断处理过程中,完全由硬件自动执行的步骤是______。
  • A.保存中断点
  • B.识别中断点
  • C.保存被中断服务程序破坏的通用寄存器中的内容
  • D.返回中断点
【正确答案】 A
【答案解析】[解析] 保护现场有两个含义:第一,保存程序断点;第二,保存通用寄存器和状态寄存器的内容。前者由中断隐指令即硬件实现,后者可由中断服务程序实现。
关于通用寄存器的保护,各类教材和辅导书中都没有详细解释,考生有必要了解一下。
中断现场保护中,保护返回地址、程序状态字、堆栈指针是必需的,否则中断结束后将无法顺利返回。而保护通用寄存器的目的在于防止用户中断服务子程序使用其中的寄存器,造成对原有内容的覆盖而在中断返回后任务执行出错。因此在中断里对通用寄存器的保护完全可以取决于中断服务子程序对通用寄存器的使用情况,仅仅保存中断服务子程序中所用到的有限的几个通用寄存器,而不必保存所有通用寄存器。以arm体系结构为例,在用户模式下可用的通用寄存器为R0~R12、R13用作堆栈指针、R14为返回地址、R15用作PC。如果在中断服务子程序中只用到R0~R12中的一小部分,则在中断到来时可以仅仅只保存通用存器中的这一小部分,从而能够减少访存时间,最终达到缩短中断响应提高中断实时性的目的。
在实际情况中,这种策略是具有可行性的。首先,每个中断服务子程序中所需要的通用寄存器是可知的。在使用汇编语言编写用户中断服务子程序时,所需要的通用寄存器由程序员控制,使用C语言则由编译器决定具体使用到哪几个通用寄存器。因此,在大多数中断服务子程序中并没有必要保护全部通用寄存器,以免造成对其余通用寄存器的多余保护。