Appendix: AArch64 Instructions

Instruction Arguments Comments
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