Lightweight version. Reduced size from 9.7 MB to 3.8 MB by converting figures from JPEG format to 16 color indexed PNG. —bookfixer
Modern Instructions for 64-Bit ARM CPUs
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-centered course in 64-bit ARM assembly that teaches you how real machines organize memory, data, and control flow—best for programmers who already know a high-level language and want to understand what the compiler actually emits.
【Book Arc】
- **Opening (~0%–10%)**: Sets up the case for learning ARM assembly (Apple Silicon, Raspberry Pi, mobile/embedded), introduces the GNU Assembler (Gas) and the ARM lineage from the 6502/RISC heritage, then lays the data-representation groundwork: binary/hex, signed vs. unsigned, extension and saturation, IEEE floating point, BCD, ASCII/Unicode, and the Operand2 forms behind immediate and shifted-register operands.
- **Early (~10%–30%)**: Moves into machine organization—runtime memory sections (.text, .data, .bss, .pool), endianness, alignment, the full set of ARM addressing modes, push/pop and stack discipline—then builds the programmer's toolkit: constants, pointers, strings, arrays, structs, unions, procedures with activation records and ABI parameter passing, and floating-point/FPU arithmetic.
- **Middle (~30%–50%)**: Covers low-level control structures (branches, if/else, switch, state machines, loops and loop optimization), advanced arithmetic on extended-precision and mixed-size operands, numeric conversion between strings and values, and table-lookup techniques—the "translate HLL constructs into instruction sequences" core of the book.
- **Late (~50%–75%)**: Shifts to advanced material: Neon/SIMD vector programming (loads, shuffles, vertical/horizontal ops, shifts), bit manipulation with bitfield instructions, and the Gas compile-time language including C preprocessor macros and conditional assembly.
- **Ending (~75%–100%)**: Applies everything to real projects—string libraries and Unicode handling, multi-file assembly with .include/extern directives, makefiles and archiver-built libraries, and stand-alone programs using the svc system-call interface across Linux and macOS; reference appendices cover ASCII, a glossary, Gas installation, Bash, and useful C functions.
【Book Arc note】The excerpts are dominated by the table of contents and front matter; percentages above are inferred from chapter ordering rather than confirmed position markers.
【Key Takeaways】
- **Assembly is taught as machine organization, not just syntax** (Opening): the stated rationale is that understanding the underlying machine helps you write and debug better high-level code—speed, space, and bit-twiddling are the practical payoffs.
- **Gas is the assumed toolchain throughout** (Opening): examples, directives, and macro facilities are tied to the GNU Assembler, with installation guidance for macOS and Linux, so setup matters before chapter one.
- **Data representation is treated as first-class** (Opening): sign/zero extension, saturation, IEEE formats, BCD, and character encodings are covered before serious programming, because ARM operands and conversions depend on them.
- **Memory layout and addressing modes are the hinge of the book** (Early): sections, PIE/ASLR, endianness, alignment, and the seven-plus addressing modes (PC-relative, pre/post-indexed, scaled-indexed) are what let you actually reach variables.
- **Procedures follow the ARM ABI explicitly** (Early): activation records, leaf procedures, standard entry/exit sequences, and parameter-passing conventions are spelled out rather than left implicit.
- **HLL constructs are rebuilt from branches and flags** (Middle): if/else, short-circuit vs. complete Boolean evaluation, switch, state machines, and loop optimizations show how compilers think—and where you can beat them.
- **Advanced topics go beyond scalar code** (Late): extended-precision arithmetic, numeric conversion, table lookups, Neon SIMD, bitfield instructions, and Gas macro programming extend the toolkit substantially.
- **The book ends in engineering practice** (Ending): separate compilation, makefiles, static libraries, and stand-alone svc-based programs (including a "Hello, World!" and file I/O demo) turn exercises into buildable projects.
【Reading Tips】
- **Skim the front matter and appendices first** to confirm your Gas setup (macOS vs. Linux) and Bash familiarity; the main text assumes a working toolchain.
- **Deep-read Chapters 2–4 (data representation, memory, addressing)**—everything later depends on Operand2, addressing modes, and stack discipline; this is where most readers stall.
- **Treat Parts II–III as a translation exercise**: after each control-structure or arithmetic section, write the equivalent in C and compare with compiler output to internalize the mapping.
- **Don't skip the macro/compile-time chapter if you plan real projects**; the string library and makefile chapters build directly on it.
- **Use the appendices as reference, not narrative**—ASCII tables, glossary, and C function lists are lookup material.
【Coverage Limits】
This guide is synthesized from stratified excerpts that are largely the table of contents and front matter; specific code examples, exercise content, and chapter-level depth are not covered, so treat chapter-level claims as structural rather than verified detail.
Excerpt 1
UTHOR AND TECHNICAL REVIEWER ACKNOWLEDGMENTS INTRODUCTION 0.1 A Brief History of the ARM CPU 0.2 Why Learn ARM Assembly? 0.3 Why Learn 64-Bit ARM? 0...
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) (1)
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 to WeChat Moments
The Art of ARM Assembly, Volume 1 64-Bit ARM Machine Organization and Programming (Randall Hyde)(Z-Library) (1)
Scan the QR code with WeChat to open this book
Tap the ··· menu in the top-right corner
Choose Share to Moments
You are already in WeChat. Tap ··· in the top-right corner and choose Share to Moments.
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) (1)
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