1. gzyueqian
      13352868059

      嵌入式培訓教程學習ARM與Thumb之間的狀態轉換

      更新時間: 2019-04-02 15:19:04來源: 嵌入式培訓瀏覽量:5894

        狹義的嵌入式就是ARM9、cortex A8等特定的跑操作系統的芯片,arm嵌入式在學習中會涉及到很多知識點。今天嵌入式培訓教程分享的是ARM與Thumb之間的狀態轉換這一部分的內容。

        由于Thumb指令在某些特殊情況下可能比ARM指令更有效,所以它在很多方面得到了廣泛的應用。但是Thumb知識ARM指令集的一個子集,它不能獨立組成一個應用系統,所以在很多情況下應用程序需要二者的混合編程,這就必然存在ARM與Thumb狀態之間函數調用的問題。下面嵌入式培訓教程將詳細介紹。

        狀態切換的實現
        ARM/Thumb之間的狀態切換是通過一條專用的轉移交換指令BX來實現的。BX指令以通用寄存器位操作數,通過拷貝Rn到PC來實現4GB空間范圍內的一個跳轉。BX利用Rn寄存器中目的地址值的一位來判斷跳轉后的狀態。當一位為0時,表示轉移到ARM狀態;當一位為1時,表示轉移到Thumb狀態。
        無論是ARM還是Thumb,其指令在存儲器中都是邊界對齊的。因此,在執行跳轉過程中,PC寄存器中的位被舍棄,不起作用。在BX指令的執行過程中,位正好被用作狀態判斷的標志,不會造成存儲器訪問不對齊的錯誤。
        下面是一段直接進入狀態切換的例程:
       ??;從ARM狀態開始
        CODE32                                                         ;表明一下是ARM指令
        ADR       R0,Into_Thumb+1                    ;得到目標地址,末位置1,表示轉移到Thumb
        BX         R0                                             ;轉向Thumb
        …
        CODE16                                                         ;表明以下是Thumb指令Into_Thumb
        …
        ADR       R5,Back_to_ARM                       ;得到目標地址,末位缺省為0 ,轉移到ARM
        BX         R5                                             ;轉向ARM
        …
        CODE32
        Back_to_ARM                                          ;ARM代碼段起始地址

        要理論與知識相結合,這樣才能掌握扎實。跟著粵嵌嵌入式培訓教程學習arm嵌入式,其實很簡單,掌握好方法,那就是行云流水。



      免費預約試聽課

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

      
      

      1. 亚洲福利一区二区三区 | 中文字幕日本一区二区三区 | 亚洲国产精品综合久久 | 在线的Av免费观看 | 中文字幕亚洲视频一在线 | 中文成人无字幕乱码精品区 |