ARM中斷返回地址詳細分析
在ARM體系中,通常有以下3種方式控制程序的執(zhí)行流程:
1、在正常執(zhí)行過程中,每執(zhí)行一條ARM指令,程序計數(shù)器PC的值加4個字節(jié);每執(zhí)行一條Thumb指令,程序計數(shù)器PC加2個字節(jié)。整個過程是順序執(zhí)行的;
2、跳轉 B指令執(zhí)行跳轉操作;BL指令在執(zhí)行跳轉的同時,保存子程序返回地址;BX指令,執(zhí)行跳轉的同時,根據(jù)目標地址的最低位,可以將程序狀態(tài)切換到Thumb狀態(tài);BLX指令執(zhí)行上述3個操作;
3、當異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當前指令后,將跳轉到相應的異常中斷處理程序處執(zhí)行。在進入異常中斷處理程序時,要保存被中斷的程序的執(zhí)行現(xiàn)場,在從異常中斷處理程序退出時,要恢復被中斷的程序的執(zhí)行現(xiàn)場。當異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行。
重點:ARM處理器對異常中斷的響應過程:
㈠、保存當前程序狀態(tài)寄存器CPSR到對應異常中斷的處理器模式下的SPSR中;
㈡、設置當前程序狀態(tài)寄存器CPSR的處理器模式位M(4:0)為對應的處理器模式,并禁止IRQ中斷(設置I位=1);當進入的是FIQ模式時,禁止FIQ中斷(設置F位=1);
㈢、將對應異常中斷的處理器模式下的LR設置成返回地址;
㈣、將程序計數(shù)器PC值,設置成該異常中斷向量地址,從而跳轉到相應的異常中斷處理程序處執(zhí)行。
上述處理器對異常中斷的響應過程可以用偽代碼描述如下:
R14





