有什么作用:
ORRS R1、R3做什么?
是否只是 R1 |= R3,可能设置了 N- 或 Z 标志?
这可能是显而易见的,但我还没有找到任何描述没有操作数 2 的 ORR 助记符的文档。
非常感谢您的反馈。
-b。
在 ARM 汇编中,目标寄存器 (Rd) 与源寄存器 (Rn) 相同的指令可以省略 Rd。所以这些是相同的,并且会汇编成完全相同的指令。
orrs r1, r1, r3
orrs r1, r3
add r1, r1, #5
add r1, #5
等等。
这是拇指指令。在 16 位 Thumb 操作码中,您只能容纳两个操作数,您不会得到额外的operand2
.
如您所料,确实如此R1 |= R3
。该S
标志的存在表明该指令是 If-Then 块的一部分(Thumb 具有而不是正确的 ARM 条件执行);ORR
并ORRS
生成相同的操作码,只是上下文不同。
它可能在armv7m trm 或者它自己的trm 中,但是他们有一个,我不记得统一的术语,汇编语言,所以
添加 r0,r3
将为手臂和拇指组装,拇指与手臂一样,上面等同于添加 r0,r0,r3。对于拇指你没有得到三个寄存器选项,但功能是隐含的 r0=r0+r3。