Write Sign in

ARMv8-A / ARMv9-A ecosystem

ARM64 / AArch64

A load/store 64-bit architecture used in phones, Apple Silicon, servers, embedded boards, secure firmware, kernels, and modern performance-sensitive software.

Linux ELFAndroid ELFmacOS/iOS Mach-OFirmware/UEFI

ABI notes

AAPCS64 defines argument registers, callee-saved registers, stack alignment, vector registers, and platform calling rules. Apple arm64 adds platform-specific conventions.

Privilege model

Exception levels EL0-EL3, vector tables, system registers, MMU, barriers, traps, SMC/HVC, pointer authentication on supported platforms.

Registers

NameAliasesClassRole
X0-X7W0-W7GeneralArguments and return values
X8W8GeneralIndirect result and syscall number on Linux
X9-X15W9-W15GeneralCaller-saved temporaries
X19-X28W19-W28GeneralCallee-saved registers
X29FPStackFrame pointer
X30LRControlLink register return address
SPWSPStackStack pointer
V0-V31B/H/S/D/Q viewsSIMD/FPFloating point and vector work

Instruction groups

Load/store
LDR, STR, LDP, STP, addressing modes, literals

Arithmetic and logic
ADD, SUB, AND, ORR, EOR, shifts, bitfield ops

Branching
B, BL, RET, CBZ, CBNZ, TBZ, TBNZ, conditional branches

System
MRS, MSR, SVC, HVC, SMC, ISB, DSB, DMB

Atomics/SIMD
LDXR/STXR, acquire/release, NEON, SVE where available

Starter code

.global _start
_start:
    mov x8, #64
    mov x0, #1
    adr x1, msg
    mov x2, #12
    svc #0

    mov x8, #93
    mov x0, #0
    svc #0
msg:
    .ascii "hello arm64\n"