<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          ARM體系的異常中斷

          作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
          ARM體系中,通常有3種方式控制處理器的流程

            1:在正常執(zhí)行過(guò)程中,每執(zhí)行一條ARM指令,程序計(jì)數(shù)器寄存器PC的值加四個(gè)字節(jié),在每執(zhí)行一條Thumb指令,程序計(jì)數(shù)器寄存器PC的值加兩個(gè)字節(jié),整個(gè)過(guò)程是按照順序執(zhí)行的  

          本文引用地址:http://www.ex-cimer.com/article/201611/317945.htm

             2:通過(guò)跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到指定的地址標(biāo)號(hào)進(jìn)行執(zhí)行,或者跳轉(zhuǎn)到特定的子程序進(jìn)行執(zhí)行,其中B指令用于執(zhí)行跳轉(zhuǎn)操作,BL指令用于執(zhí)行跳轉(zhuǎn)操作的同時(shí),保存子程序相應(yīng)的返回地址,BX在執(zhí)行跳轉(zhuǎn)操作的同時(shí),分居目標(biāo)地址的最低位,可以將程序切換到THumb狀態(tài),BLX執(zhí)行上述三個(gè)操作

             3:當(dāng)異常中斷發(fā)生時(shí),系統(tǒng)執(zhí)行當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序進(jìn)行執(zhí)行,當(dāng)異常處理中斷執(zhí)行完成之后,程序返回到發(fā)生中斷的下一條指令出繼續(xù)執(zhí)行,在進(jìn)入異常中斷處理程序的時(shí)候,要保存被中斷程序的執(zhí)行現(xiàn)場(chǎng),在從異常中斷程序退出時(shí),要恢復(fù)被中斷的程序的執(zhí)行現(xiàn)場(chǎng)

          ARM處理器對(duì)異常中斷的響應(yīng)

            1保存處理器當(dāng)前的狀態(tài),中斷屏蔽位,以及各條件標(biāo)志位,這是通過(guò)當(dāng)前程序狀態(tài)寄存器CPSR的內(nèi)容保存到要自信的異常中斷對(duì)應(yīng)的SPSR寄存器中實(shí)現(xiàn)的

            2設(shè)置當(dāng)前程序狀態(tài)寄存器的相應(yīng)的位,包括CPSR中的位,是處理器進(jìn)入相應(yīng)的執(zhí)行模式,設(shè)置CPSR中的位,進(jìn)制IRQ中斷,但進(jìn)入FIQ是,進(jìn)制FIQ中斷

            3將寄存器設(shè)置成返回地址

            4將程序計(jì)數(shù)器PC,設(shè)置長(zhǎng)異常中斷的中斷向量地址,從而跳轉(zhuǎn)到相應(yīng)的異常中斷進(jìn)行處理

          從異常中斷處理中返回

            1恢復(fù)被中斷的程序的處理器后狀態(tài),講SPSR_mode寄存器內(nèi)容到CPSR

            2返回到發(fā)生異常中斷的指令的下一條指令執(zhí)行,講IR_MODE中的內(nèi)容到PC

            3復(fù)位和異常中斷不需要返回,程序計(jì)數(shù)器PC所指向的不同的異常中斷是不同的



          關(guān)鍵詞: ARM體系異常中

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();