Assembly 如何解释本例中的BLO
在这个例子中,我试图弄清楚BLO在比较什么。我知道如果没有设置进位标志,它会分支。是比较r1和旧r1(上面的指令?),因为代码没有在BGE分支。非常感谢Assembly 如何解释本例中的BLO,assembly,arm,instruction-set,microprocessors,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,#
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
在没有
CMP
指令的情况下解释条件代码可能很棘手,因为编写助记符是为了在有CMP
指令的情况下简化解释。但在这个例子中,情况并没有那么糟:记住CMP
只是SUBS
,结果被丢弃,所以
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
SUBS r1, r1, #0xC9
BLO stop
表示与相同的条件
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
CMP r1, #0xC9
BLO stop
但在
r1
中留下不同的结果。因此,条件是当r1
(旧值)在无符号意义上小于0xC9时,它将进行分支——换句话说,当SUBS
导致无符号值为r1
时,在没有CMP
指令的情况下解释条件代码可能很困难,因为助记符的编写是为了在出现CMP
时简化解释。但在这个例子中,情况并没有那么糟:记住CMP
只是SUBS
,结果被丢弃,所以
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
SUBS r1, r1, #0xC9
BLO stop
表示与相同的条件
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
CMP r1, #0xC9
BLO stop
但在
r1
中留下不同的结果。因此,条件是当r1
(旧值)在无符号意义上小于0xC9时,它将进行分支——换句话说,当SUBS
导致r1
的无符号值换行时,BLO
是有效的x86指令吗?@Jose它是ARM指令它的比较(旧)r1
与0xC9
明显。BLO
是有效的x86指令吗?@Jose这是ARM指令它比较(旧的)r1
与0xC9
明显。
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