Thumb指令集之:Thumb数据处理指令
下面详细介绍各指令的语法和使用。
11.4.1ADC指令
(1)编码格式
带进位的加法指令ADC的编码格式如图11.7所示。
图11.7ADC指令的编码格式
带进位的ADC指令和加法指令ADD配合使用可以实现多字相加(multi-word),详见ARM指令集介绍。
(2)指令的语法格式
ADCRd>,Rm>
①Rd>
第一个操作数寄存器,并且是操作结果的目的寄存器。
②Rm>
第二操作数寄存器。
(3)指令操作的伪代码
Rd=Rd+Rm+CFlag
NFlag=Rd[31]
ZFlag=ifRd==0then1else0
CFlag=CarryFrom{Rd+Rm+CFlag}
VFlag=OverflowFrom{Rd+Rm+CFlag}
(4)对应的ARM指令
ADCSRd>,Rd>,Rm>
11.4.2小立即数加法指令ADD(1)
(1)编码格式
立即数加法指令ADD(1)的编码格式如图11.8所示。
图11.8ADD(1)指令的编码格式
ADD加法指令实现“小常数”的加法运算,并将相加的结果保存到指定的寄存器中。
(2)指令的语法格式
ADDRd>,Rn>,#immed_3>
①Rd>
加法操作的目标寄存器。
②Rn>
操作数寄存器。
③#immed_3>
3位的立即数。该立即数将和寄存器Rn>的值相加,并将结果保存到Rd>中。
(3)指令操作的伪代码
Rd=Rn+immed_3
NFlag=Rd[31]
ZFlag=ifRd==0then1else0
CFlag=CarryFrom{Rn+immed_3}
VFlag=OverflowFrom{Rn+immed_3}
(4)对应的ARM指令
ADDSRd>,Rn>,#immed_3>
11.4.3大立即数加法指令ADD(2)
(1)编码格式
立即数加法指令ADD(2)的编码格式如图11.9所示。
图11.9ADD(2)指令的编码格式
此中形式的ADD(2)指令将一个大的立即数(8bit)与指定寄存器的值相加,并将运算结果保存到此寄存器中。
(2)指令的语法格式
ADDRd>,#immed_8>
①Rd>
加法操作的目标寄存器。
②#immed_8>
8位的立即数。该立即数将和寄存器Rd>的值相加,并将结果保存到Rd>中。
(3)指令操作的伪代码
Rd=Rd+immed_8
NFlag=Rd[31]
ZFlag=ifRd==0then1else0
CFlag=CarryFrom{Rn+immed_8}
VFlag=OverflowFrom{Rn+immed_8}
(4)对应的ARM指令
ADDSRd>,Rd>,#immed_8>
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码