ARM9中斷與PC
當前"執行PC"=當前PC-8。例如,如下圖所示,當前“取值PC”=16,當前“解碼PC”=12,當前“執行PC”=8。
本文引用地址:http://dyxdggzs.com/article/201611/320028.htm2, 發(fā)生IRQ異常,執行保護操作,LR中保存由于FIQ或IRQ占先而沒(méi)有被執行完的指令的地址的下一條地址(LR中保存的是當前PC的值,也就是取值的指令地址),即LR指向了指令地址=16的指令,但指令地址=12的指令還沒(méi)有執行完,中斷返回后還要繼續執行
3, 進(jìn)入中斷服務(wù)程序
4, 中斷返回前,對LR處理,LR=LR-4,指向之前已譯碼但沒(méi)被執行的指令的地址(如果返回的時(shí)候直接返回PC,那么中間就有一個(gè)指令沒(méi)有執行)
5, 返回
注:ARM9是五級流水,圖中只畫(huà)出了三級流水。
評論