Instruction set

The aarch64 instruction set is an extension of the aarch32 instruction set, with additional instructions and enhancements to support 64-bit computing.

Aarch64 supports more instructions, such as floating-point operations and SIMD instructions. Aarch32 only supports a limited set operations.

Data processing

Instruction
Description

FMADD

Perform a fused multiply-add operation

FMSUB

Perform a fused multiply-subtract operation

FMUL

Multiply two floating-point registers

FDIV

Divide two floating-point registers

FCMP

Compare two floating-point registers

FMOV

Move a floating-point value from one register to another

FCVT

Convert a floating-point value to a different data type

STLR

Store a word from a register into memory and make the store visible to other processors

Load/Store

Instruction
Description

LDUR

Load a word from memory into a register using an offset from the base register

STUR

Store a word from a register into memory using an offset from the base register

LDRD

Load two consecutive words from memory into two registers

STRD

Store two consecutive words from two registers into memory

LDXP

Load a word from memory using an address calculated from two registers

STXP

Store a word into memory using an address calculated from two registers

LDAR

Load a word from memory and make the load visible to other processors

Control Flow

Instruction
Description

CBZ

Branch to a specified address if the value in a register is zero

CBNZ

Branch to a specified address if the value in a register is not zero

BLR

Branch to the address stored in a register

RET

Return from a subroutine and restore the return address from the stack

BRK

Trigger a breakpoint exception

HLT

Halt the processor until an external event occurs

Exception-generating

Instruction
Description

SVC

Trigger a supervisor call (SVC) exception

HVC

Trigger a hypervisor call (HVC) exception

SMC

Trigger a secure monitor call (SMC) exception

BRK

Trigger a breakpoint exception

HLT

Halt the processor until an external event occurs

ERET

Return from an exception or interrupt

Synchronization

Instruction
Description

DMB

Ensure that all memory accesses before this instruction have completed before any memory accesses after this instruction are performed

DSB

Ensure that all memory accesses before this instruction have completed before the processor can execute any subsequent instructions

ISB

Ensure that all instructions before this instruction have completed before any subsequent instructions are executed

CAS

Compare the value in a register with the value in memory, and store a new value in memory if they match

LDXR

Load a word from memory using an atomic read-modify-write operation

STXR

Store a word into memory using an atomic read-modify-write operation

System

Instruction
Description

MRS

Read the value of a system register into a register

MSR

Write a value to a system register from a register

SYS

Perform a privileged operation or access a system resource

HINT

Provide a hint to the processor about the expected behavior of the code

DCPS

Change the current processor mode or the state of interrupts

NOP

Do nothing

Last updated