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 应该是个状态的后缀

ARM 汇编指令 orreq 的使用_搜索

查看条件码

  • ORR 指令后面可以增加 cond,可以认为一个后缀,条件码如下

ARM 汇编指令 orreq 的使用_orreq_02

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