新闻中心

EEPW首页>嵌入式系统>设计应用> Thumb指令集之:Thumb数据处理指令

Thumb指令集之:Thumb数据处理指令

作者: 时间:2013-09-30 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/257041.htm

11.4.28逻辑或指令ORR

(1)编码格式

逻辑或指令ORR的编码格式如图11.34所示。

图11.34ORR指令的编码格式

ORR指令将两个寄存器的值做按位做或运算,并根据指令的执行结果更新程序状态寄存器的标志位。

(2)指令的语法格式

ORRRd>,Rm>

①Rd>

目的寄存器,存放指令的操作结果,存放做逻辑或运算的其中一个操作数。

②Rm>

存放做逻辑或运算的另一个操作数。

(3)指令操作的伪代码

Rd=RdORRm

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=unaffected

VFlag=unaffected

(4)对应的指令

ORRSRd>,Rd>,Rm>

11.4.29循环右移指令ROR

(1)编码格式

循环右移指令ROR的编码格式如图11.35所示。

图11.35ROR指令的编码格式

ROR指令将一个给定寄存器的值循环右移一定的位数。并根据指令的操作结果更新状态寄存器的条件标志位。详见指令操作伪代码。

(2)指令的语法格式

RORRd>,Rs>

①Rd>

目的寄存器。存储指令的操作结果和被移位的数值。

②Rs>

循环左移的位数。

(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)对应的指令

MOVSRd>,Rd>,RORRs>

11.4.30带进位的减指令SBC

(1)编码格式

带进位的减指令SBC的编码格式如图11.36所示。

图11.36SBC指令的编码格式

SBC指令从指定寄存器中减去另一个寄存器的数值,再减去寄存器CPSR中C条件标志位的反码,并把结果保存到目标寄存器中,同时根据操作的结果更新CPSR中相应的条件标志位。

(2)指令的语法格式

SBCRd>,Rm>

①Rd>

被减数寄存器,同时保存指令的操作结果。

②Rm>

减数寄存器,保存减法操作的减数。

(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)对应的指令

SBCSRd>,Rd>,Rm>



评论


相关推荐

技术专区

关闭