Building on Randall Hyde’s iconic series, The Art of ARM Assembly delves into programming 64-bit ARM CPUs—the powerhouses behind iPhones, Macs, Chromebooks, servers, and embedded systems.
Following a fast-paced introduction to the art of programming in assembly and the GNU Assembler (Gas) specifically, you’ll explore memory organization, data representation, and the basic logical operations you can perform on simple data types. You’ll learn how to define constants, write functions, manage local variables, and pass parameters efficiently. You’ll explore both basic and advanced arithmetic operations, control structures, numeric conversions, lookup tables, and string manipulation—in short, you’ll cover it all.
You’ll also dive into ARM SIMD (Neon) instructions, bit manipulation, and macro programming with the Gas assembler, as well as how to
Declare pointers and use composite data structures like strings, arrays, and unions
Convert simple and complex arithmetic expressions into machine instruction sequences
Use ARM addressing modes and expressions to access memory variables
Create and use string library functions and build libraries of assembly code using makefiles
This hands-on guide will help you master ARM assembly while revealing the intricacies of modern machine architecture. You’ll learn to write more efficient high-level code and gain a deeper understanding of software-hardware interactions—essential skills for any programmer working with ARM-based systems.
AI Reading Assistant
Whole-book reading guide from stratified index samples; jump to passages in the text
Tip the Site
Support this siteYour recognition and a small knowledge-service contribution help keep this technical work open source.Scan the WeChat Pay or Alipay code below. Logged-in and guest visitors can both tip.
WeChat Pay
Alipay
Open WeChat or Alipay and scan. No login required.
AI guide
【One-Line Pitch】
A hands-on, Gas-first guide to 64-bit ARM assembly that teaches you how the machine really works—registers, memory, procedures, SIMD, and macros—so you can write faster code and understand what compilers do. Best for programmers with some C/system background who want real ARM64 fluency, not just theory.
【Book Arc】
- **Opening (~0%–10%)**: Sets up why 64-bit ARM matters (Apple Silicon, Raspberry Pi, mobile/embedded) and introduces Gas, data representation, condition flags, floating-point formats, and Operand2/large-constant mechanics—the vocabulary you need before writing real code.
- **Early (~10%–30%)**: Covers memory organization and access (sections, endianness, addressing modes, push/pop), then constants, pointers, and composite types (strings, arrays, structs, unions), moving into procedures, activation records, and the ARM ABI parameter-passing conventions.
- **Middle (~30%–55%)**: Low-level control structures (branches, if/switch, loops and loop optimization), advanced arithmetic and extended-precision operations, numeric conversion, and table lookups—the core of translating high-level logic into instruction sequences.
- **Late (~55%–80%)**: Advanced machine-level topics: Neon/SIMD vector programming (data movement, shifts, arithmetic), bit manipulation, and the Gas compile-time language including macros and the C/C++ preprocessor.
- **Ending (~80%–100%)**: Practical project work—string operations and Unicode handling, managing multi-file projects with includes, separate compilation, makefiles and archiver libraries, plus stand-alone programs using system calls; reference appendices cover ASCII, Gas installation, Bash, and C functions.
【Key Takeaways】
- **Assembly is a machine-organization teacher first, an optimization tool second** (Middle): Hyde frames the main value as understanding how hardware executes code, which improves your high-level language decisions and debugging. (Middle)
- **Gas is the concrete tool throughout** (Opening): Directives, sections, alignment, and the compile-time language are treated as first-class skills, not incidental syntax. (Opening)
- **Memory and addressing modes are foundational** (Early): PC-relative, register-indirect, pre/post-indexed, and scaled-indexed modes, plus stack push/pop, underpin everything that follows. (Early)
- **Procedures follow a disciplined ABI** (Early): Activation records, standard entry/exit sequences, and parameter passing by value vs. reference are presented as reusable patterns. (Early)
- **Control flow can be optimized systematically** (Middle): Loop improvements like moving termination conditions, backward loops, eliminating invariants, unrolling, and induction variables are concrete techniques. (Middle)
- **SIMD/Neon unlocks real performance** (Late): Vector registers, vertical/horizontal operations, and saturating/narrowing shifts show how to process data in parallel. (Late)
- **Macros and the compile-time language reduce repetition** (Late): Gas macros, CPP macros, conditional assembly, and compile-time loops let you generate code rather than hand-write it. (Late)
- **Real projects need build infrastructure** (Ending): Separate compilation, makefiles, archiver libraries, and system-call-based stand-alone programs bridge exercises to working software. (Ending)
【Reading Tips】
- Deep-read the memory/addressing and procedure chapters early; they recur constantly and are the hardest to fake later.
- Skim the reference appendices (ASCII, Bash, C functions) on first pass, then return when a build or system-call example needs them.
- Treat the SIMD/Neon and macro chapters as the payoff—read them with an assembler open, since the instruction variety is dense.
- Use the numeric-conversion and table-lookup chapters as worked examples of turning algorithms into instruction sequences, not as trivia.
- Keep the ABI/entry-exit patterns handy as templates; most later code reuses them.
【Coverage Limits】
This guide is based on stratified excerpts (front matter, table of contents, and introduction-heavy material); later chapters are mapped from their headings rather than full prose, so specific code examples and detailed explanations are not summarized here.
Excerpt 1
uisites 0.5 Source Code 0.6 Typography and Pedantry 0.7 Organization PART I: MACHINE ORGANIZATION 1 HELLO, WORLD OF ASSEMBLY LANGUAGE 1.1 What Yo...
system (with over 61 million units sold as of this writing). In addition to the Pi, millions of ARM-based Arduino-compatible and other single-board computers...
o, and ROCKPro 64. Almost any 64-bit ARM-based Linux system. NVIDIA Jetson Nano systems. In theory, it should be possible to apply the information in this bo...
s Compile-Time Language Covers the Gas macro facilities. Macros are powerful constructs enabling you to design your own assembly language statements that...
of the main program. You can accomplish this by using the .global statement, specifying the global name as an operand: _main in the macOS case, main in the L...
ros and conditional assembly information. You can find aoaa.inc along with all the other example code at https:// artofarm .randallhyde .com . If you’re curi...
Support this siteYour recognition and a small knowledge-service contribution help keep this technical work open source.
Scan the WeChat Pay or Alipay code below. Logged-in and guest visitors can both tip.
WeChat PayAlipay
Open WeChat or Alipay and scan. No login required.
Add Tag
Enter tag name (max 50 characters)
Share E-Book
The Art of ARM Assembly, Volume 1 64-Bit ARM Machine Organization and Programming (Randall Hyde)(Z-Library)
Scan QR code with your phone to access
Copy the link or scan the QR code to access this e-book on your phone
Share E-Book via Email
Please enter email address
Donation Statistics
¥.00
Total Donations
0
Donation Count
The Art of ARM Assembly, Volume 1 64-Bit ARM Machine Organization and Programming (Randall Hyde)(Z-Library)
Find Your Favorite Books
Only registered users can comment after logging in. Comments need to be reviewed by administrators before being displayed
Loading comments...
Reply to Comment
Edit Comment