新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Thumb指令集之: Thumb編程模型

        Thumb指令集之: Thumb編程模型

        作者: 時間:2013-09-30 來源:網絡 收藏

        11.2Thumb

        所有的Thumb指令都是16位的。它們都是指令重新編碼得到的,所以繼承了指令集的許多特點。

        本文引用地址:http://www.104case.com/article/257043.htm

        ①有數據處理、數據傳送和流控制的指令結構。

        ②支持8位字節、16位半字和32位字數據類型,半字以兩字節邊界對齊,字以4字節邊界對齊。

        ③32位的無分段存儲器(unsegmentedmemory)。

        除了繼承了指令集的一些特點外,與ARM指令集存在以下一些差異。

        ①大多數Thumb指令為無條件執行指令(所有ARM指令都是條件執行的)。

        ②許多Thumb數據處理指令采用了2地址格式(目的寄存器與源寄存器相同)。而ARM指令中除64位乘法指令外,其余指令均采用3地址模式。

        ③Thumb指令格式減少了很多ARM指令格式的限制,使Thumb指令編寫的代碼密度大大提高。

        無論處理器處于什么狀態,所有的異常都使處理器返回到ARM狀態,并完成異常處理。但異常發生時,CPSR狀態寄存器在進入異常時被保存到相應的SPSR中,當異常處理結束后,處理器將恢復到異常發生前的狀態,并按照發生異常時處理器的狀態繼續執行ARM或Thumb指令。

        應該注意的是,ARM異常返回指令需要根據ARM流水線的行為對返回地址進行調整。由于Thumb指令是2字節長,而ARM指令是4字節長,所以由Thumb執行狀態進入異常時其自然偏移量應與ARM不同(ARM狀態下,拷貝到鏈接寄存器的值PC-4)。為了減少編程的復雜性,ARM體系結構中設置了硬件邏輯,以實現Thumb狀態的自動地址偏移調整,使ARM和Thumb狀態編程一致。

        表11.2列出了Thumb狀態下發生異常時LR的值。

        表11.2 Thumb

        異常

        異常鏈接寄存器值

        返回指令

        Reset

        不可預知的值

        未定義指令

        未定義指令地址+2

        MOVPC,r14

        SWI

        Swi指令地址+2

        MOVPC,r14

        預取異常

        預取異常指令+4

        MOVPC,r14,#4

        數據異常

        產生預取異常指令地址+8

        MOVPC,r14,#8

        IRQ

        下一條將被執行的指令地址+4

        MOVPC,r14,#4

        FIQ

        下一條將被執行的指令地址+4

        MOVPC,r14,#4



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 象州县| 永昌县| 藁城市| 太康县| 保靖县| 商南县| 正宁县| 蓬莱市| 囊谦县| 商都县| 叙永县| 盐亭县| 大渡口区| 大厂| 囊谦县| 宣汉县| 五指山市| 武陟县| 颍上县| 虎林市| 金秀| 甘谷县| 甘肃省| 万盛区| 文水县| 凤山县| 洪洞县| 清镇市| 延吉市| 敦煌市| 永修县| 墨竹工卡县| 玛沁县| 平和县| 华阴市| 讷河市| 永康市| 海阳市| 于都县| 招远市| 偃师市|