首页 > 解决方案 > 在这个例子中如何解释 BLO

问题描述

在这个例子中,我试图弄清楚 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      

标签: assemblyarminstruction-setmicroprocessors

解决方案


在没有CMP指令的情况下解释条件代码可能会很棘手,因为助记符的编写是为了在有CMP. 但在这个例子中,它并没有那么糟糕:记住这CMP只是SUBS丢弃了结果,所以

SUBS   r1, r1, #0xC9
BLO    stop

表示相同的条件

CMP    r1, #0xC9
BLO    stop

但在 中留下不同的结果r1。因此,条件是它会在r1(旧值)小于0xC9时分支,在无符号意义上——换句话说,当SUBS结果导致 的无符号值回绕时r1


推荐阅读