您的位置 首页 电路

ARM 汇编指令条件履行详解

2.5条件执行在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位。在数据处理指令中使用S后…

2.5 条件履行

ARM形式下,任何一条数据处理指令能够挑选是否依据操作的成果来更新CPSR寄存器中的ALU状况标志位。在数据处理指令中运用S后缀来完成该功用。

不要在CMP,CMN,TST或许TEQ指令中运用S后缀。这些比较指令总是会更新标志位。

在Thumb形式下,一切数据处理指令都更新CPSR中的标志位。有一个破例便是:当一个或更多个高寄存器被用在MOV和ADD指令时,此刻MOV和ADD不能更新状况标志.

简直一切的ARM指令都能够依据CPSR中的ALU状况标志位来条件履行。参见表2-1条件履行后缀表。

在ARM形式下,你能够:

· 依据数据操作的成果更新CPSR中的ALU状况标志;

· 履行其他几种操作,但不更新状况标志;

· 依据当时状况标志,决议是否履行接下来的指令。

在Thumb形式,大多数操作总是更新状况标志位,而且只能运用条件搬运指令(B)来完成条件履行。该指令(B)的后缀和在ARM形式下是相同的。其他指令不能运用条件履行。

2.5.1 ALU状况标志

CPSR寄存器包括下面的ALU状况标志:

2.5.2 履行条件

N,Z,C,V相关的条件码后缀如下表所列:

举例说明:

示例1:

ADD r0, r1, r2 ; r0 = r1 + r2, 不更新标志位

ADDS r0, r1, r2 ; r0 = r1 + r2, 后缀S表明更新标志位

ADDCSS r0, r1, r2 ; If C 标志为1,则履行r0 = r1 + r2, 且更新标志,

CMP r0, r1 ; CMP指令肯定会更新标志.

示例2:(请自行剖析)

gcd CMP r0, r1

BEQ end

BLT less

SUB r0, r0, r1

B gcd

less

SUB r1, r1, r0

B gcd

end

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/276840.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部