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

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

11.4.13比较指令CMN

(1)编码格式

比较指令CMN的编码格式如图11.19所示。

图11.19CMN指令的编码格式

比较指令CMN将一个寄存器的值和另一个寄存器的值取负做比较,并根据比较结果更新程序状态字的标志位。程序中比较指令后通常跟条件执行指令。

(2)指令的语法格式

CMNRn>,Rm>

①Rn>

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

②Rm>

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

(3)指令操作的伪代码

Alu_out=Rn+Rm

NFlag=alu_out[31]

ZFlag=ifalu_out==0then1else0

CFlag=NOTBorrowFrom(Rn+Rm)

VFlag=OverflowFrom(Rn+Rm)

(4)对应的ARM指令

CMNRn>,Rm>

11.4.14比较指令CMP(1)

(1)编码格式

比较指令CMP(1)的编码格式如图11.20所示。

图11.20CMP(1)指令的编码格式

比较指令CMP(1)将一个寄存器的值和8位立即数做比较,并根据比较结果更新程序状态字的标志位。程序中比较指令后通常跟条件执行指令。

(2)指令的语法格式

CMPRn>,#immed_8>

①Rn>

操作数寄存器。

②immed_8>

8位常数。将与寄存器Rn>的值做比较。

(3)指令操作的伪代码

Alu_out=Rn–immed_8

NFlag=alu_out[31]

ZFlag=ifalu_out==0then1else0

CFlag=NOTBorrowFrom(Rn–immed_8)

VFlag=OverflowFrom(Rn–immed_8)

(4)对应的ARM指令

CMPRn>,#immed_8>

11.4.15比较指令CMP(2)

(1)编码格式

比较指令CMP(2)的编码格式如图11.21所示。

图11.21CMP(2)指令的编码格式

比较指令CMP(2)将两个寄存器的值做比较,并根据比较结果更新程序状态字的标志位。程序中比较指令后通常跟条件执行指令。

(2)指令的语法格式

CMPRn>,Rm>

①Rn>

操作数寄存器,存放比较的第一个操作数。

②Rm>

操作数寄存器,存放比较的第二个操作数。

(3)指令操作的伪代码

alu_out=Rn–Rm

NFlag=alu_out[31]

ZFlag=ifalu_out==0then1else0

CFlag=NOTBorrowFrom(Rn-Rm)

VFlag=OverflowFrom(Rn-Rm)

(4)对应的ARM指令

CMPRn>,Rm>

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

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

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

或用微信扫描左侧二维码

相关文章

查看电脑版