ARM中断返回地址详细分析
扫描二维码
随时随地手机看文章
ARM中断返回地址详细分析
在ARM体系中,通常有以下3种方式控制程序的执行流程:
1、在正常执行过程中,每执行一条ARM指令,程序计数器PC的值加4个字节;每执行一条Thumb指令,程序计数器PC加2个字节。整个过程是顺序执行的;
2、跳转 B指令执行跳转操作;BL指令在执行跳转的同时,保存子程序返回地址;BX指令,执行跳转的同时,根据目标地址的最低位,可以将程序状态切换到Thumb状态;BLX指令执行上述3个操作;
3、当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。
重点:ARM处理器对异常中断的响应过程:
㈠、保存当前程序状态寄存器CPSR到对应异常中断的处理器模式下的SPSR中;
㈡、设置当前程序状态寄存器CPSR的处理器模式位M(4:0)为对应的处理器模式,并禁止IRQ中断(设置I位=1);当进入的是FIQ模式时,禁止FIQ中断(设置F位=1);
㈢、将对应异常中断的处理器模式下的LR设置成返回地址;
㈣、将程序计数器PC值,设置成该异常中断向量地址,从而跳转到相应的异常中断处理程序处执行。
上述处理器对异常中断的响应过程可以用伪代码描述如下:
R14