1. gzyueqian
      13352868059

      粵嵌科技講解怎么處理arm中的異常返回地址

      更新時間: 2020-03-23 16:49:40來源: 粵嵌教育瀏覽量:6783

            如果說想要學(xué)習(xí)嵌入式的話,那么arm是大家必須要掌握好的了,嵌入式這么對于動手能力要求非常強(qiáng)的行業(yè),不管是細(xì)節(jié)上面還是大體上面要求都是非常的嚴(yán)格的。那么在學(xué)習(xí)嵌入式的時候是會經(jīng)常遇到arm中出現(xiàn)的異常返回的,這個要怎么處理呢?下面粵嵌科技的嵌入式培訓(xùn)講師就來給大家講解下:

        FIQ與RIQ異常:


        FIQ與RIQ異常返回處理是一樣的,當(dāng)處理器執(zhí)行完當(dāng)前指令后才去查詢中斷且查看是否允許中斷,如果處理器產(chǎn)生了中斷,這時PC的值已經(jīng)更新,即PC指向了當(dāng)前指令后第三條指令的位置(被中斷指令地址加12),產(chǎn)生FIQ與RIQ異常后處理器將PC-4的值保存到了對應(yīng)模式下的LR,而它指向的是當(dāng)前被中斷指令的后面的第二條指令,因此在返回時我們需要人為的將LR中保存的值自減4以得到正確的返回地址。

       

        預(yù)取指中止異常:


        在指令預(yù)取時如果地址是非法的,該指令就被標(biāo)記為有問題的指令,流水線上該指令之前的指令繼續(xù)執(zhí)行,當(dāng)執(zhí)行被標(biāo)記為有問題的指令的時候,處理器就會產(chǎn)生異常。產(chǎn)生該異常終返回時需要返回到被標(biāo)記的指令處重新讀取并執(zhí)行該指令,因此異常返回時需要返回到該指令處而不是該指令的下一條指令。所以在中斷返回時我們需要人為的對LR中保存的值自減4。


        指令未定義異常:


        指令未定義異常由當(dāng)前正在執(zhí)行的指令產(chǎn)生,即產(chǎn)生異常時PC的值還沒有更新,PC的值指向當(dāng)前指令后面第二條指令,產(chǎn)生異常后LR中保存的指令是當(dāng)前指令的下一條指令的地址,所以異常返回時直接把LR的值給PC即可不許人為的去修正返回地址。


        軟中斷異常:

        軟中斷異常與指令未定義異常一樣,也是當(dāng)前指令在執(zhí)行過程中就產(chǎn)生了異常,所以LR中保存的返回地址是當(dāng)前軟中斷指令的下一條指令的地址,不需要人為的去修正,返回時直接將LR的值賦給PC即可。


        數(shù)據(jù)中止異常:


        產(chǎn)生該異常的時候程序要返回到有問題的指令處重新訪問該數(shù)據(jù),因此應(yīng)該返回到產(chǎn)生異常的指令處而不是產(chǎn)生異常指令的下一條指令處。當(dāng)異常產(chǎn)生時PC的值已經(jīng)更新,所以PC指向的是異常產(chǎn)生指令的后面的第三條指令,而LR中保存的是PC-4的值即異常產(chǎn)生指令的后面的第二條指令的地址。所以在返回時我們需人為的對LR中的值進(jìn)行自減8的處理。以保證異常正確的返回。


        上述每一種異常發(fā)生時,返回地址都要根據(jù)具體的異常類型進(jìn)行重新修正。如果說在學(xué)習(xí)或者是工作的時候會出現(xiàn)以上粵嵌科技的嵌入式培訓(xùn)講師給大家整理的這些異常的話,大家只要按照以上的做法就可以恢復(fù)正常了。想要了解更多關(guān)于嵌入式的技術(shù)問題的話,可以點擊我們文章下面的獲取試聽資格按鈕來獲取我們的嵌入式課程免費試聽資格,來和我們的講師進(jìn)行面對面的交流。

      免費預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 在线观看亚洲一级影视 | 在线a视频网站 | 日韩动漫一区在线观看 | 中文字幕色婷婷在线精品中 | 日韩亚洲欧美大陆 | 精品少妇一区二 |