Thumb指令集之:Thumb数据处理指令
11.4.7SP相关加法指令ADD(6)
(1)编码格式
寄存器加法指令ADD(6)的编码格式如图11.13所示。
图11.13ADD(6)指令的编码格式
该指令将一个立即数和SP值相加,并将SP相关地址写入目标寄存器。立即数可以是0~1020范围内的任意4的倍数。该指令不更新程序状态字的标志位。
(2)指令的语法格式
ADDRd>,SP,#immed_8>×4
①Rd>
指令的目的寄存器,存放指令的操作结果。
②SP
SP相关地址。
③immed_8>
该立即数的4倍将与SP值相加。
(3)指令操作的伪代码
Rd=SP+(immed_82)
11.4.8SP相关加法指令ADD(7)
(1)编码格式
寄存器加法指令ADD(6)的编码格式如图11.14所示。
该指令将一个立即数和SP值相加,并将SP相关地址写回SP寄存器。立即数可以是0~508范围内的任意数值的4倍。该指令不更新程序状态字的标志位。
图11.14ADD(7)指令的编码格式
(2)指令的语法格式
ADDSP,#immed_7>×4
①SP
SP相关地址,同时也为指令的目标寄存器。
②immed_7>
指定的7位立即数,该立即数的4倍将与SP值相加。
11.4.9逻辑与指令AND
(1)编码格式
逻辑与指令AND的编码格式如图11.15所示。
图11.15AND指令的编码格式
AND指令实现两个寄存器值的按位“与”操作。程序状态字的标志位根据指令的执行结果更新。
(2)指令的语法格式
ANDRd>,Rm>
①Rd>
操作数寄存器,包含指令的第一个操作数。同时也为指令操作结果的目的寄存器。
②Rm>
操作数寄存器,保护指令的第二个操作数。
(3)指令操作的伪代码
Rd=RdANDRm
NFlag=Rd[31]
ZFlag=ifRd==0then1else0
CFlag=unaffected
VFlag=unaffected
(4)对应的ARM指令
ANDSRd>,Rd>,Rm>
评论