orreq
-
阅读代码时,发现有个【组合指令】 orreq, orr 一般是 OR,也就是或操作,后面加个 eq 表示什么呢?
-
比如下面的代码:前面一个操作, tst,好像没做实际的操作,可能影响了一些【状态位】
tst r3, #1 << 20 @ check write
orreq r1, r1, #1 << 11
查阅 arm 汇编手册
- 当前通过 ARM 官方 查找的
Instruction Set Assembly Guide for Armv7 and earlier Arm architectures Reference Guide
,搜索了一下,发现有这个 orreq 的指令,主要是 ORR 指令, eq 应该是个状态的后缀
查看条件码
- ORR 指令后面可以增加 cond,可以认为一个后缀,条件码如下
ORREQ 的解释
-
ORR 是逻辑 或 操作, eq 是条件码 相等
-
也就是 条件码, z 标志位 为 1 时,才会执行操作
tst r3, #1 << 20 @ check write @# 设置条件码
orreq r1, r1, #1 << 11 @# 根据条件码,上面【相等 z 标志位 置位1】 执行操作
orreq r1, r1, #1 << 11 就是 r1 = r1 || 1<<11 的操作
- 逻辑或操作,如果一个位置1,结果就是 1,不管哪一位,上面 r1 结果应该是 1