ARM指令中的条件代码


指令集中所有指令都是可以带条件执行的。下面是条件的列表:

EQ : 等于 
如果一次比较之后设置了 Z 标志。 
  
NE : 不等于 
如果一次比较之后清除了 Z 标志。 
  
VS : 溢出设置 
如果在一次算术操作之后设置了 V 标志,计算的结果不适合放入一个 32bit 目标寄存器中。 
  
VC : 溢出清除 
如果清除了 V 标志,与 VS 相反。 
  
HI : 高于(无符号) 
如果一次比较之后设置了 C 标志并清除了 Z 标志。 
  
LS : 低于或同于(无符号) 
如果一次比较操作之后清除了 C 标志或设置了 Z 标志。 
  
PL : 正号 
如果一次算术操作之后清除了 N。出于定义‘正号’的目的,零是正数的原因是它不是负数... 
  
MI : 负号 
如果一次算术操作之后设置了 N 标志。 
  
CS : 进位设置 
如果一次算术操作或移位操作之后设置了 C 标志,操作的结果不能表示为 32bit。你可以把 C 标志当作结果的第 33 位。 
  
CC : 进位清除 
与 CS 相反。 
  
GE : 大于或等于(有符号) 
如果一次比较之后...
设置了 N 标志并设置了 V 标志
或者...
清除了 N 标志并清除了 V 标志。 
  
GT : 大于(有符号) 
如果一次比较之后...
设置了 N 标志并设置了 V 标志
或者...
清除了 N 标志并清除了 V 标志
并且...
清除了 Z 标志。 
  
LE : 小于或等于(有符号) 
如果一次比较之后...
设置了 N 标志并清除了 V 标志
或者...
清除了 N 标志并设置了 V 标志
并且...
设置了 Z 标志。 
  
LT : 小于(有符号) 
如果一次比较之后...
设置了 N 标志并清除了 V 标志。
或者...
清除了 N 标志并设置了 V 标志。 
  
AL : 总是 
缺省条件,所以不用明显声明。 
  
NV : 从不 
不是特别有用,它表示应当永远不执行这个指令。相当于NOP。包含 NV 是为了完整性(与 AL 相对),不推荐在中使用它。 
  
S:
还有一个条件是S,它表示执行操作后,接着把SPSR的内容恢复到CPSR中。例如:

  ADD     R0, R0, R1

  ADDS    R0, R0, R1

  ADDEQS  R0, R0, R1

第一个例子是一个基本的加法(把 R1 的值增加到 R0),它不影响状态寄存器。 
第二个例子是同一个加法,只不过它导致更改状态寄存器。 
最后一个例子是同一个加法,更改状态寄存器。不同在于它是一个有条件的指令。只有前一个操作的结果是 EQ (如果设置了 Z 标志)的时候它才执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值