《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > ARM與Thumb之間的狀態轉換

ARM與Thumb之間的狀態轉換

2017-06-22
關鍵詞: 匯編語言

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

1)      狀態切換的實現

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代碼段起始地址


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 一个人看的www高清频道免费| 亚洲国产精彩中文乱码av| 黄色大片在线观看| 天堂а√在线最新版在线8| 久久久国产精华液| 欧美多人换爱交换乱理伦片| 免费福利在线视频| 青娱乐在线免费视频| 国产精品大片天天看片| www.tube8.com日本| 日日麻批免费40分钟无码| 亚洲人成人无码网www国产| 男人扒开女人下面狂躁动漫版 | 欧美日韩中文一区二区三区| 动漫美女羞羞漫画| 非洲黑人最猛性xxxx_欧美| 国产精品李雅在线观看| www.日本在线| 抬头见喜全集免费版| 久久综合综合久久综合| 欧美激情一区二区三区四区| 免费看三级毛片| 色偷偷亚洲第一综合| 国产成人精品无缓存在线播放| 84pao国产成视频免费播放| 女人与公拘交酡过程高清视频| 中文字幕日韩人妻不卡一区| 日韩欧美成人免费中文字幕| 亚洲国产精品成人久久久| 澳门永久av免费网站| 再深点灬舒服灬太大了免费视频| 蜜柚免费视频下载| 国产成人理在线观看视频| 18禁免费无码无遮挡不卡网站| 天堂а√在线中文在线新版| 两个人看的日本高清电影| 日本天码aⅴ片在线电影网站| 亚洲av无码国产综合专区| 欧美激情videossex护士| 人人玩人人添人人| 精品久久久无码人妻中文字幕豆芽|