在此示例中如何解释BLO

时间:2018-11-29 11:17:16

标签: assembly arm instruction-set microprocessors

在此示例中,我试图找出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      

1 个答案:

答案 0 :(得分:2)

在没有CMP指令的情况下解释条件代码可能很棘手,因为在存在CMP时,助记符的编写使解释变得容易。但是在此示例中,还算不错:记住CMP只是SUBS,结果被丢弃了,所以

SUBS   r1, r1, #0xC9
BLO    stop

表示与

相同的条件
CMP    r1, #0xC9
BLO    stop

,但在r1中留下不同的结果。因此,条件是在r1(旧值)小于0xC9时(无符号意义)换句话说,即SUBS导致r1的无符号值的换行。