新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Thumb指令集之:Thumb數(shù)據(jù)處理指令

        Thumb指令集之:Thumb數(shù)據(jù)處理指令

        作者: 時(shí)間:2013-09-30 來源:網(wǎng)絡(luò) 收藏

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

        11.4.10算術(shù)右移指令A(yù)SR(1)

        (1)編碼格式

        算術(shù)右移指令A(yù)SR(1)的編碼格式如圖11.16所示。

        圖11.16ASR(1)指令的編碼格式

        這種形式的算術(shù)右移指令可以方便的實(shí)現(xiàn)將一個(gè)寄存器的值除以一個(gè)常數(shù)。該常數(shù)是以2為底的冪。

        (2)指令的語法格式

        ASRRd>,Rm>,#immed_5>

        ①Rd>

        目的寄存器。用于存放指令操作的結(jié)果。

        ②Rm>

        操作數(shù)寄存器。存放將要被右移的數(shù)據(jù)。

        ③immed_5>

        指定右移的位數(shù)。該常數(shù)取值范圍為1~31。

        (3)指令操作的偽代碼

        Ifimmed_5==0

        CFlag=Rm[31]

        IfRm[31]==0then

        Rd=0

        Else/*Rm[31]==1*/

        Rd=0xffffffff

        Else/*immed_5>0*/

        CFlag=Rm[immed_5-1]

        Rd=RmArithmetic_shift_Rightimmed_5

        NFlag=Rd[31]

        ZFlag=ifRd==0then1else0

        VFlag=unaffected

        (4)對應(yīng)的指令

        MOVSRd>,Rm>,ASR#immed_5>

        注意

        v5以前的體系結(jié)構(gòu)版本中,沒有單獨(dú)的Thumb。在v6版本中已經(jīng)增加了位移指令,詳細(xì)信息請參加ARM體系結(jié)構(gòu)相關(guān)文檔。

        11.4.11算術(shù)右移指令A(yù)SR(2)

        (1)編碼格式

        算術(shù)右移指令A(yù)SR(2)的編碼格式如圖11.17所示。

        圖11.17ASR(2)指令的編碼格式

        此種形式的ASR指令的操作數(shù)均為寄存器。該指令根據(jù)指令的操作結(jié)果更新程序狀態(tài)字的標(biāo)志位。

        (2)指令的語法格式

        ASRRd>,Rs>

        ①Rd>

        存放指令的操作數(shù)和操作結(jié)果。

        ②Rs>

        指定操作數(shù)將要被移動(dòng)的位數(shù)。

        (3)指令操作的偽代碼

        IfRs[7:0]==0then

        CFlag=unaffected

        Rd=unaffected

        ElseifRs[7:0]32then

        CFlag=Rd[Rs[7:0]-1]

        Rd=Rdarithmetic_shift_RightRs[7:0]

        Else/*Rs[7:0]>=32*/

        CFlag=Rd[31]

        IfRd[31]==0then

        Rd=0

        Else/*Rd[31]==1*/

        Rd=0xffffffff

        NFlag=Rd[31]

        ZFlag=ifRd==0then1else0

        VFlag=unaffected

        (4)對應(yīng)的ARM指令

        MOVSRd>,Rd>,ASRRs>

        11.4.12位清零指令BIC

        (1)編碼格式

        位清零指令BIC的編碼格式如圖11.18所示。

        圖11.18BIC指令的編碼格式

        BIC指令將兩個(gè)寄存器的值按位做“異或”操作。該指令根據(jù)指令的執(zhí)行結(jié)果更新程序狀態(tài)字的標(biāo)志位。

        (2)指令的語法格式

        BICRd>,Rm>

        ①Rd>

        存放指令的操作數(shù)和操作結(jié)果。

        ②Rm>

        操作數(shù)寄存器,該寄存器中的數(shù)據(jù)的反碼將會和Rd>中的值做“與”操作。

        (3)指令操作的偽代碼

        Rd=RdANDNOTRm

        NFlag=Rd[31]

        ZFlag=ifRd==0then1else0

        CFlag=unaffected

        VFlag=unaffected

        (4)對應(yīng)的ARM指令

        BICSRd>,Rd>,Rm>



        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 蓬溪县| 水富县| 老河口市| 吉水县| 宁城县| 封开县| 登封市| 江陵县| 玉环县| 泗洪县| 武安市| 英吉沙县| 贵南县| 神农架林区| 梓潼县| 长子县| 炉霍县| 依兰县| 招远市| 克拉玛依市| 安西县| 洮南市| 增城市| 麦盖提县| 龙井市| 蒙城县| 五指山市| 陇川县| 淳安县| 阿鲁科尔沁旗| 大邑县| 奉节县| 康马县| 镇远县| 西畴县| 嵩明县| 五莲县| 吉安县| 桦川县| 屏东市| 永顺县|