arm 条件操作码与助记符

/*
 * 2012/4/5    12:04        bao yu
 */


     操作码    助记符    标志     含义

0x0     0000    EQ        Z = 1     相等
0x1     0001    NE        Z = 0     不相等

0x2     0010    CS/HS    C = 1     无符号数大于或等于
0x3     0011    CC/LO    C = 0     无符号数小于

0x4     0100    MI        N = 1     负数
0x5     0101    PL        N = 0     正数或零

0x6     0110    VS        V = 1     溢出
0x7     0111    VC        V = 0     没有溢出

0x8     1000    HI        C=1,Z=0     无符号数大于
0x9     1001    LS        C=0,Z=1     无符号数小于或等于

0xa     1010    GE        N = V     有符号数大于或等于
0xb     1011    LT        N != V     有符号数小于

0xc     1100    GT        Z=0,N=V     有符号数大于
0xd     1101    LE        Z=1,N!=V 有符号数小于或等于

0xe     1110    AL        任意     无条件执行(指令默认条件)
0xf     1111    NV        任意     从不执行(不要使用)


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 相对),你不应该在你的代码中使用它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值