如何解释这个例子中的 BLO
How to interpret BLO in this example
在这个例子中,我试图弄清楚 BLO 比较的是什么。如果未设置进位标志,我知道它会分支。它是将 r1 与旧的 r1(上面的指令?)进行比较,因为代码不会在 BGE 分支。非常感谢。
LDR r0,=0X3
LDR r1, =0X8F
CMP r0,r1
BGE a_label
SUBS r1,r1,#0XC9
a_label BLO stop
SUBS r1,r1,#0X7D
stop
在没有 CMP
指令的情况下解释条件代码可能会很棘手,因为编写助记符是为了在有 CMP
的情况下使解释变得容易。但在这个例子中,还不错:记住 CMP
只是 SUBS
并丢弃了结果,所以
SUBS r1, r1, #0xC9
BLO stop
表示与
相同的条件
CMP r1, #0xC9
BLO stop
但在 r1
中留下不同的结果。因此,条件是当 r1
(旧值)lower than 0xC9 时,在无符号意义上,它会分支——换句话说,当 SUBS
导致 r1
.
的无符号值换行
在这个例子中,我试图弄清楚 BLO 比较的是什么。如果未设置进位标志,我知道它会分支。它是将 r1 与旧的 r1(上面的指令?)进行比较,因为代码不会在 BGE 分支。非常感谢。
LDR r0,=0X3
LDR r1, =0X8F
CMP r0,r1
BGE a_label
SUBS r1,r1,#0XC9
a_label BLO stop
SUBS r1,r1,#0X7D
stop
在没有 CMP
指令的情况下解释条件代码可能会很棘手,因为编写助记符是为了在有 CMP
的情况下使解释变得容易。但在这个例子中,还不错:记住 CMP
只是 SUBS
并丢弃了结果,所以
SUBS r1, r1, #0xC9
BLO stop
表示与
相同的条件CMP r1, #0xC9
BLO stop
但在 r1
中留下不同的结果。因此,条件是当 r1
(旧值)lower than 0xC9 时,在无符号意义上,它会分支——换句话说,当 SUBS
导致 r1
.