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

时间:2013-09-30来源:网络

11.4.34减法指令SUB(4)

(1)编码格式

减法指令SUB(4)的编码格式如图11.40所示。

图11.40SUB(4)指令的编码格式

SUB(4)指令从堆栈指针SP中减去7位立即数的4倍,也就是说其取值为在0~508范围内4的倍数。

(2)指令的语法格式

SUBSP,#immed_7>×4

①SP

程序的堆栈指针,同时也为指令的目的寄存器,存放指令的运算结果。

②immed_7>

7位立即数,其值的4倍将作为减数参加运算。

(3)指令操作的伪代码

SP=SP–(immed_72)

注意

在Thumb指令集中,使用满递减堆栈,该指令常被用于元素的入栈操作。

(4)对应的ARM指令

SUBSP,SP,#immed_7>*4

11.4.35位测试指令TST

(1)编码格式

位测试指令TST的编码格式如图11.41所示。

图11.41TST指令的编码格式

TST指令将两个寄存器的值按位做逻辑与操作,并根据指令的执行结果更新CPSR中相应的条件标志位。TST指令常被用于测试寄存器中某一位是否置位。

(2)指令的语法格式

TSTRn>,Rm>

①Rn>

操作数寄存器,用于存放指令的第一个操作数。

②Rm>

操作寄存器,该寄存器中的值将和Rn>寄存器中的值做逻辑与操作。

(3)指令操作的伪代码

alu_out=RnANDRm

NFlag=alu_out[31]

ZFlag=ifalu_out==0then1else0

CFlag=unaffected

VFlag=unaffected

(4)对应的ARM指令

TSTRn>,Rm>

11.4.36Thumb指令集中数据操作指令举例

下面的例子程序综合使用了各种数据操作指令,通过该例可以对Thumb状态下数据操作指令有更深入的了解。

ADDr0,r4,r7 ;r0=r4+r7

SUBr6,r1,r2 ;r6=r1–r2

ADDr0,#255 ;r0=r0+255

ADDr1,r4,#4 ;r1=r4+4

NEGr3,r1 ;r3=0–r1

ADDr2,r5 ;r2=r2ANDr5

EORr1,r6 ;r1=r1EORr6

CMPr2,r3 ;r2–r3,并更新CPSR

CMPr7,#100 ;r7–100,并更新CPSR

MOVr0,#200 ;r0=200

1 2 3 4 5 6 7 8 9 10 11 12 13

关键词: Thumb指令集 数据处理指令 ARM MOV指令 移位指令

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版