在此示例中,我试图找出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
答案 0 :(得分:2)
在没有CMP
指令的情况下解释条件代码可能很棘手,因为在存在CMP
时,助记符的编写使解释变得容易。但是在此示例中,还算不错:记住CMP
只是SUBS
,结果被丢弃了,所以
SUBS r1, r1, #0xC9
BLO stop
表示与
相同的条件CMP r1, #0xC9
BLO stop
,但在r1
中留下不同的结果。因此,条件是在r1
(旧值)小于0xC9时(无符号意义)换句话说,即SUBS
导致r1
的无符号值的换行。