ARM64 Assembly: Programming Arm Processors from the Ground Up

Daniel McCarthy
Created by Daniel McCarthy
~8h 19m 42 Lessons
New Arrival! Lifetime Access Certificate Included

About this course

Go from your first ARM64 instruction to writing fast, practical assembly that works with Linux, C, and modern hardware. You do not need an ARM processor to follow this course, we use an emulator.

The ARM64 Assembly Language Masters Course teaches AArch64 assembly from the ground up through clear explanations, guided demonstrations, runnable examples, quizzes, and hands-on assignments. You’ll begin by configuring the GNU assembler and QEMU environment, then write your first program and learn how registers, labels, memory, addresses, branches, and Linux system calls really work.

As your skills develop, you’ll explore integer and floating-point arithmetic, conditional logic, loops, the stack, strings, subroutines, and the ARM64 calling convention. You’ll learn how C and assembly communicate, including pointer and structure arguments, functions with more than eight parameters, large return values, callbacks, and calls into the C standard library.

The advanced sections take you beyond basic syntax and into real systems programming. You’ll implement bit masks and CRC-32, vectorize a dot product with NEON SIMD, build a thread-safe atomic counter using exclusive instructions, call functions through pointers, and create a position-independent shared library using the Global Offset Table.

By the end of the course, ARM64 assembly will no longer look like mysterious low-level code. You’ll understand how instructions, memory, operating-system services, compilers, linkers, calling conventions, and hardware work together—and you’ll be able to write, test, debug, and integrate ARM64 assembly with confidence.

What you’ll learn

  • Write and run ARM64 assembly programs on Linux
  • Work confidently with registers, memory, pointers, and the stack
  • Build branches, loops, arithmetic, and floating-point operations
  • Call Linux system services directly
  • Create reusable subroutines that follow AAPCS64
  • Mix ARM64 assembly with C in both directions
  • Pass pointers, structures, callbacks, and large values
  • Use the C standard library from assembly
  • Apply bitwise operations to practical problems such as CRC-32
  • Accelerate calculations with NEON SIMD
  • Implement atomic operations and understand memory ordering
  • Build position-independent code and shared libraries

Who this course is for

This course is ideal for programmers, reverse engineers, security researchers, emulator developers, embedded developers, and anyone who wants to understand ARM64 beyond the compiler’s output.

No previous assembly-language experience is required. Basic programming knowledge is helpful, and some familiarity with C will benefit you in the interoperability sections.

Skill Level Beginner
Estimated Learning Time ~8h 19m
Lessons 42
Your Progress Start anytime

What you'll learn

  • Write and run ARM64 assembly programs on Linux
  • Understand ARM64 registers, values, labels, and memory layout
  • Work with addresses, pointers, strings, and structured data
  • Call Linux system services directly from assembly
  • Create conditional branches, loops, and program logic
  • Perform integer, floating-point, and bitwise operations
  • Use the stack safely and maintain proper alignment
  • Create reusable subroutines using the ARM64 calling convention
  • Mix C and ARM64 assembly code in both directions
  • Pass arguments, pointers, structures, and large return values
  • Call C standard-library functions from assembly
  • Build practical programs such as a password checker and CRC-32 calculator
  • Accelerate calculations using NEON SIMD instructions
  • Implement thread-safe atomic operations and memory ordering
  • Use function pointers, callbacks, and indirect calls
  • Build position-independent code and shared libraries
  • Debug, test, and verify ARM64 assembly programs
  • Understand how processors, compilers, linkers, and operating systems work together

Who this course is for

  • Reverse engineers
  • People interested in ARM64
  • Emulator Developers
  • Security Researchers
  • Low level programmers

Requirements

  • Ability to install a Ubuntu virtual machine (its free and easy)
  • Some C experience is recommended but not required