Как интерпретировать BLO в этом примере - PullRequest
0 голосов
/ 29 ноября 2018

В этом примере я пытаюсь выяснить, с чем сравнивает 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 голосов
/ 29 ноября 2018

Может быть сложно интерпретировать коды условий в отсутствие инструкции CMP, потому что мнемоника была написана для упрощения интерпретации при наличии CMP.Но в этом примере все не так плохо: помните, что CMP - это просто SUBS, а результат отбрасывается, поэтому

SUBS   r1, r1, #0xC9
BLO    stop

представляет то же условие, что и

CMP    r1, #0xC9
BLO    stop

, нооставляет другой результат в r1.Следовательно, условие состоит в том, что он будет разветвляться, когда r1 (старое значение) равно lo меньше 0xC9, в смысле без знака, другими словами, когда SUBS приводит к переносу значения без знакаr1.

...