ARM指令中的条件代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM指令中的条件代码(2007-4-27 17:16)

ARM指令集中所有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 标志)的时候它才执行。

本文来自:我爱研发网() - R&D大本营

详细出处:/Blog/Detail_RD.Blog_zjhfqq_7860.html

相关文档
最新文档