Chapter 17 Further Reading: ARM64 Instruction Set


1. ARM Architecture Reference Manual — Chapter C3: A64 Instruction Set ARM Ltd. (DDI 0487) — free download

The authoritative instruction reference. Every instruction is documented with encoding, operation description, pseudocode, and exception conditions. C3.4 covers data processing; C3.6 covers loads and stores; C3.9 covers branches. Search for instruction mnemonics directly; the index is comprehensive.


2. AAPCS64 Specification (IHI0055) ARM Ltd. — free download from developer.arm.com

The calling convention specification. Section 6 covers the register usage table, stack alignment, and argument passing. Section 8 covers C++ specifics. Essential for writing assembly that interoperates with C code.


3. "Hacker's Delight" by Henry S. Warren Jr. (2nd edition) Addison-Wesley, 2012

Chapter 6 covers searching words for byte values (the null-byte detection algorithm from Case Study 17-2). Chapter 10 covers integer division by constants — the multiply-high + shift technique that compilers use instead of SDIV. Chapter 2 covers bit manipulation tricks. Directly applicable to efficient ARM64 assembly.


4. musl libc arm64 string routines musl libc source — https://git.musl-libc.org

Production-quality ARM64 strlen, memcpy, memset, and strcpy implementations. Study these to see how the word-at-a-time and alignment techniques are implemented in real code that ships in Linux distributions.

Path: src/string/ and architecture-specific arch/aarch64/ overrides.


5. glibc arm64 string optimizations GNU C Library source — https://sourceware.org/git/glibc.git

glibc's ARM64 string functions use NEON SIMD for maximum performance. sysdeps/aarch64/multiarch/strlen_asimd.S is the NEON strlen. Compare it to the naive byte loop to understand what production-quality optimization looks like.


6. "ARM Cortex-A57 Software Optimization Guide" ARM Ltd. (EPM048642) — free download

Instruction latencies and throughput for the Cortex-A57 (used in Raspberry Pi 4). Particularly useful for understanding which instructions are pipelined together and which create hazards. Chapter 4 gives the instruction timing tables.


7. "ARM Instruction Set Architecture" — Cambridge University Course Notes Dr. Robert Mullins, Cambridge Computer Science — free PDF online

Excellent tutorial-style coverage of the ARMv8-A instruction set, including the calling convention, with worked examples. More accessible than the ARM ARM for initial learning.


8. "Writing ARM64 Assembly for iOS" — Apple Developer Documentation Apple Inc. — free at developer.apple.com

Covers Apple Silicon ARM64 assembly with differences from Linux: macOS syscall numbers, Mach-O linking, and working with the macOS ABI. Essential if you're targeting Apple Silicon.


9. Godbolt Compiler Explorer — AAPCS64 Calling Convention Examples https://godbolt.org

Type any C function with multiple arguments or return types and select GCC ARM64 as the compiler. The output shows exactly how arguments are placed in registers, how the prologue/epilogue looks, and how different optimization levels affect code generation. Compare -O0, -O1, -O2 outputs for the same function.


10. "ARM64 Assembly Language" — Azeria Labs Blog https://azeria-labs.com/arm64-binary-exploitation-part-1/

A hands-on series covering ARM64 from a security research perspective: stack layout, calling convention, function prologues/epilogues, and how to read GDB output for ARM64 programs. Complements this chapter with practical debugging examples.