对于现在大多数嵌入式操作系统,在进入中断时首先做的第一件事就是保护中断发生前的现场,即保存返回地址、程序状态字、堆栈指针以及所有通用寄存器到中断堆栈,以防止用户中断服务子程序对中断返回后现场的破坏。以μC/OS-II微内核为例,在arm和X86两种体系结构微处理器上进入中断后保存现场的过程如图2所示。从代码中可见,两种不同的体系结构中,为保护现场,都需要执行三条访存指令,其中一条为批量访存指令(STMFD SP!,{R0-R12}和PUSHA)用以保护通用寄存器R0-R12和AX,CX,DX,BX,SP,BP,SI,DI。
9 Q+ Z* V% |6 K& n( I! u0 `6 j