當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Thumb 編程模型
Thumb 編程模型
時(shí)間:2018-09-21 來(lái)源:未知
所有的 Thumb 指令都是16 位的。它們都是ARM 指令重新編碼得到的,所以繼承了ARM 指令集的許多
特點(diǎn):
① 有數(shù)據(jù)處理、數(shù)據(jù)傳送和流控制的指令結(jié)構(gòu)。
② 支持8 位字節(jié)、16 位半字和32 位字?jǐn)?shù)據(jù)類型,半字以兩字節(jié)邊界對(duì)齊,字以4 字節(jié)邊界對(duì)齊。
③ 32 位的無(wú)分段存儲(chǔ)器(unsegmented memory)。
Thumb 指令集除了繼承了ARM 指令集的一些特點(diǎn)外,與ARM 指令集存在以下一些差異。
① 大多數(shù)Thumb 指令為無(wú)條件執(zhí)行指令(所有ARM 指令都是條件執(zhí)行的)。
② 許多Thumb 數(shù)據(jù)處理指令采用了2 地址格式(目的寄存器與源寄存器相同)。而ARM 指令中除64 位 乘法指令外,其余指令均采用3 地址模式。
③ Thumb 指令格式減少了很多ARM 指令格式的限制,使Thumb 指令編寫的代碼密度大大提高。
無(wú)論處理器處于什么狀態(tài),所有的異常都使處理器返回到ARM 狀態(tài),并完成異常處理。但異常發(fā)生時(shí), CPSR 狀態(tài)寄存器在進(jìn)入異常時(shí)被保存到相應(yīng)的SPSR 中,當(dāng)異常處理結(jié)束后,處理器將恢復(fù)到異常發(fā)生 前的狀態(tài),并按照發(fā)生異常時(shí)處理器的狀態(tài)繼續(xù)執(zhí)行ARM 或Thumb 指令。
應(yīng)該注意的是,ARM 異常返回指令需要根據(jù)ARM 流水線的行為對(duì)返回地址進(jìn)行調(diào)整。由于Thumb 指令 是2 字節(jié)長(zhǎng),而ARM 指令是4 字節(jié)長(zhǎng),所以由Thumb 執(zhí)行狀態(tài)進(jìn)入異常時(shí)其自然偏移量應(yīng)與ARM 不同 (ARM 狀態(tài)下,拷貝到鏈接寄存器的值PC-4)。為了減少編程的復(fù)雜性,ARM 體系結(jié)構(gòu)中設(shè)置了硬件 邏輯,以實(shí)現(xiàn)Thumb 狀態(tài)的自動(dòng)地址偏移調(diào)整,使ARM 和Thumb 狀態(tài)編程一致。
表中列出了Thumb 狀態(tài)下發(fā)生異常時(shí)LR 的值。

華清遠(yuǎn)見(jiàn)90+項(xiàng)目獲批!教育部2021最新協(xié)同育人項(xiàng)目名
華清遠(yuǎn)見(jiàn)榮獲2021騰訊教育“年度口碑影響力職業(yè)教育品
華清遠(yuǎn)見(jiàn)受邀參加2021年武漢民辦高校信息學(xué)科合作聯(lián)盟
溫暖同行共創(chuàng)佳績(jī) 2019華清遠(yuǎn)見(jiàn)北京總部年會(huì)大曝光
助力高校AI人工智能學(xué)科建設(shè) 華清遠(yuǎn)見(jiàn)人工智能師資班
華清遠(yuǎn)見(jiàn)受邀參加四川省物聯(lián)網(wǎng)年會(huì),榮獲優(yōu)秀企業(yè)專家
