【问题标题】:How to interpret BLO in this example在这个例子中如何解释 BLO
【发布时间】:2018-11-29 11:17:16
【问题描述】:

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

【问题讨论】:

  • BLO 是有效的 x86 指令吗?
  • @Jose 这是 ARM 指令
  • 显然是在比较(旧的)r10xC9

标签: assembly arm instruction-set microprocessors


【解决方案1】:

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

SUBS   r1, r1, #0xC9
BLO    stop

表示与

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多