数据处理指令之:SUB减操作指令
数据处理指令之:SUB减操作指令
6.3 SUB 减操作指令1.指令的编码格式SUB(Subtract)减操作指令,从寄存器Rn 中减去shifter_operand 表示的数值,并将结果保存到目标寄存器Rd 中,并根据指令的执行结果设置CPSR 中相应的标志位。
指令的编码格式如图6.4 所示。
图6.4 EOR 指令的编码格式
2.指令的语法格式SUB{cond}{S} Rn,Rn,shifter_operand
①cond
为指令编码中的条件域。它指示指令在什么条件下执行。当cond 忽略时,
指令为无条件执行(cond=AL(Alway))。
②S
S 位(bit[20])决定指令的执行是否影响CPSR 中的条件域。当S 位清0 时,指令执行不影响CPSR。当S 位置位时(并且不是r15),则有以下规则。
- 如果结果为负,则标志位N 置位;否则清0(也就是说N 等于结果的第31 位)。
- 如果结果为0,则标志位Z 置位;否则清0。
- 当操作定义为算术操作(ADD、ADC、SUB、SBC、RSB 或RSC)时,标志位C 设置为ALU 的进位输出;否则设置为移位器的进位输出。如果不需要
移位,则保持C。
- 在非算术操作中,标志位V 保持原值。在算术操作中,如果有从第30 位到第31 位的溢出,则置位;如果不发生溢出,则清0。仅当算术操作中操作数被认为是2 的补码的有符号数时,这个标志位才有意义,而且指示结果超出范
相关主题