ARM指令-条件执行及标志位

1.ARM指令条件码前缀的作用:
        ARM指令可以通过添加适当的条件码前缀来达到条件执行的目的。
        这样可以提高代码密度,减少分支跳转指令数目,提高性能;
比如:
    CMP  r3,#0            ---比较r3和0
    BEQ  skip                ---相等就跳到skip
    ADD  r0,r1,r2        ---不相等就执行 r0 = r1 + r2
skip
……
看看加后缀简化后的样子:
    CMP  r3,#0            ---比较r3和0
    ADD NE   r0,r1,r2    ---加了NE后缀,不相等就执行r0 = r1 + r2
    

2.默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位。
    CMP不需要增加“S”就可以改变相应的标志位。
     1)、什么是标志位?
                即条件码标志位,就是程序执行的条件,每执行完一个指令条件标志位就会改变;
                是前面“ARM寄存器详解“里面讲到的CPSR:
CPSR程序状态寄存器剖析
 1.高4位:NZCV
                N 置1:结果是负数;
                Z  置1:结果是0;
                C  置1:结果完成或借位
                V  置1:结果溢出
     2)、加S怎样影响标志位?
        如:SUB S  r3,r3,#0            ---r3 = r3 - 0
                BEQ      skip                ---如果相等就跳转
            注:这个S的意义是:执行SUB后如果不相等的话,CPSR的Z清0(置1),按照这个条
                件再继续执行下面的。而CMP是默认可以改变标志位的,就不需要加S。

3.处理器如何知道根据指令来更改对应的条件标志位呢?
        这里说的单指数据处理指令,其他指令的话不需要运算就不需要改变CPSR的标志位;
        数据处理指令的机器码格式:
       
  这些是一一对应的:条件码对应指令后缀(写指令的时候需要写出来的)对应标志位;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值