分支
X - Y
int x = 0x1234;
int y = 0x5678;
if (x > y) {
z = x - y;
z = 7 * z;
} else {
z = y - x;
z = 9 * z;
}
.text
.globl _start
_start:
LDR R0, =0x1234
LDR R1, =0x5678
CMP R0,R1
BHI XY
BLS YX
XY:
SUB R2,R0,R1
RSB R2,R2,R2,LSL #3 @ 逆向减
YX:
SUB R2,R1,R1
ADD R2,R2,R2,LSL #3
b . @ B .表示一直在当前指令处原地跳转,也就是死循环
.end
大于小于
< : CC >= : CS
> : HI <= : LS
= : EQ
完成如下动作
.text
.globl _start
_start:
# 给R0赋值为3 0x00000003
MOV R0,#3
# 给R1赋值为4 0x00000004
MOV R1,#4
# 将R0逻辑左移R1当前值位 0x00000006
MOV R0,R0,LSL #1
# 将R0减5 0x00000001
SUB R0,R0,#5
# 将R0第2位取反 0x00000041
EOR R0,R0,#0x40
# 将R0第3位置0 0x00000041
AN