Copying data |
|
src is an address, register, or literal |
|
|
dst is an address or register |
ldr |
dst, src |
2 or more bytes |
ldrb |
dst, src |
1 byte |
str |
src, dst |
2 or more bytes |
strb |
src, dst |
1 byte |
|
|
|
Binary operators |
|
a is a register |
|
|
b is an address, register, or literal |
|
|
c is an address, register, or literal |
add |
a, b, c |
a = b + c |
sub |
a, b, c |
a = b - c |
mul |
a, b, c |
a = b ×
c |
smulbb |
a, b, c |
a = b ×
c, 1 byte |
|
|
|
Bit shifting |
|
a is a register |
|
|
b is an address, register, or literal |
|
|
c is an address, register, or literal |
lsl |
a, b, c |
a = b << c |
asr |
a, b, c |
a = b >> c |
|
|
|
Compare and Branch |
|
x and y are addresses, registers, or literals |
|
|
z is an address or label |
cmp |
x, y |
r3 = 1 if x == y, 0 otherwise |
beq |
z |
pc = z if r3 == 0 |
bne |
z |
pc = z if r3 != 0 |
b |
z |
pc = z |
|
|
|
Calling functions |
|
z is an address or label |
bl |
z |
pc = z, new frame created |