新聞中心

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

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

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

本文引用地址:http://2s4d.com/article/257041.htm

11.4.28邏輯或指令ORR

(1)編碼格式

邏輯或指令ORR的編碼格式如圖11.34所示。

圖11.34ORR指令的編碼格式

ORR指令將兩個(gè)寄存器的值做按位做或運(yùn)算,并根據(jù)指令的執(zhí)行結(jié)果更新程序狀態(tài)寄存器的標(biāo)志位。

(2)指令的語(yǔ)法格式

ORRRd>,Rm>

①Rd>

目的寄存器,存放指令的操作結(jié)果,存放做邏輯或運(yùn)算的其中一個(gè)操作數(shù)。

②Rm>

存放做邏輯或運(yùn)算的另一個(gè)操作數(shù)。

(3)指令操作的偽代碼

Rd=RdORRm

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=unaffected

VFlag=unaffected

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

ORRSRd>,Rd>,Rm>

11.4.29循環(huán)右移指令ROR

(1)編碼格式

循環(huán)右移指令ROR的編碼格式如圖11.35所示。

圖11.35ROR指令的編碼格式

ROR指令將一個(gè)給定寄存器的值循環(huán)右移一定的位數(shù)。并根據(jù)指令的操作結(jié)果更新狀態(tài)寄存器的條件標(biāo)志位。詳見指令操作偽代碼。

(2)指令的語(yǔ)法格式

RORRd>,Rs>

①Rd>

目的寄存器。存儲(chǔ)指令的操作結(jié)果和被移位的數(shù)值。

②Rs>

循環(huán)左移的位數(shù)。

(3)指令操作的偽代碼

ifRs[7:0]==0then

CFlag=unaffected

Rd=unaffected

ElseifRs[4:0]==0then

CFlag=Rd[31]

Rd=unaffected

Else/*Rs[4:0]>0*/

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

Rd=RdRotate_RightRs[4:0]

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

VFlag=unaffected

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

MOVSRd>,Rd>,RORRs>

11.4.30帶進(jìn)位的減指令SBC

(1)編碼格式

帶進(jìn)位的減指令SBC的編碼格式如圖11.36所示。

圖11.36SBC指令的編碼格式

SBC指令從指定寄存器中減去另一個(gè)寄存器的數(shù)值,再減去寄存器CPSR中C條件標(biāo)志位的反碼,并把結(jié)果保存到目標(biāo)寄存器中,同時(shí)根據(jù)操作的結(jié)果更新CPSR中相應(yīng)的條件標(biāo)志位。

(2)指令的語(yǔ)法格式

SBCRd>,Rm>

①Rd>

被減數(shù)寄存器,同時(shí)保存指令的操作結(jié)果。

②Rm>

減數(shù)寄存器,保存減法操作的減數(shù)。

(3)指令操作的偽代碼

Rd=Rd–Rm–NOT(CFlag)

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=NOTBorrowFrom(Rd–Rm–NOT(CFlag))

VFlag=OverflowFrom(Rd–Rm–NOT(CFlag))

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

SBCSRd>,Rd>,Rm>



評(píng)論


相關(guān)推薦

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

關(guān)閉