Thumb指令集之:Thumb数据处理指令
11.4.4寄存器加法指令ADD(3)
(1)编码格式
寄存器加法指令ADD(3)的编码格式如图11.10所示。
图11.10ADD(3)指令的编码格式
此种形式的加法指令将两个寄存器的值相加,将结果放入第三个目标寄存器,并根据操作结果更新标志位。
(2)指令的语法格式
ADDRd>,Rn>,Rm>
①Rd>
加法操作的目标寄存器。
②Rn>
操作数寄存器。存放加法操作的第一个操作数。
③Rm>
操作数寄存器。存放加法操作的第二个操作数。
(3)指令操作的伪代码
Rd=Rn+Rm
NFlag=Rd[31]
ZFlag=ifRd==0then1else0
CFlag=CarryFrom(Rn+Rm)
VFlag=OverflowFrom(Rn+Rm)
11.4.5寄存器加法指令ADD(4)
(1)编码格式
寄存器加法指令ADD(4)的编码格式如图11.11所示。
图11.11ADD(4)指令的编码格式
此种形式的加法指令将两个寄存器的值相加,将结果放入第三个目标寄存器。该指令不更新程序状态字的标志位。
注意 | 该指令与ADD(3)的区别在于其操作数寄存器。该指令的操作数寄存器为r8~r14和PC高寄存器。操作结果对程序状态字的标志位没有影响。 |
(2)指令的语法格式
ADDRd>,Rm>
①Rd>
指令的操作数寄存器,其中保存加法操作的一个操作数,并将指令的操作结果放入该寄存器。取值范围为r0~r15。
②Rm>
操作数寄存器。存放加法操作的第二个操作数。可以为r0~r15的任意寄存器。
(3)指令操作的伪代码
Rd=Rd+Rm
11.4.6PC相关加法指令ADD(5)
(1)编码格式
寄存器加法指令ADD(5)的编码格式如图11.12所示。
图11.12ADD(5)指令的编码格式
该指令将一个立即数和PC值相加,并将PC相关地址写入目标寄存器。立即数可以是0~1020范围内的任意数值的4倍。该指令不更新程序状态字的标志位。
(2)指令的语法格式
ADDRd>,PC,#immed_8>×4
①Rd>
指令的目的寄存器,存放指令的操作结果。
②PC
PC相关地址。
③immed_8>
加到PC值上的8位立即数。
(3)指令操作的伪代码
Rd=(PCAND0xfffffffc)+(immed_82)
评论