Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Randall Hyde

Rating No ratings yet

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

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...
View in text
Excerpt 2
2      Extended-Precision Hexadecimal Values to Strings 9.1.3      Unsigned Decimal Values to Strings 9.1.4      Signed Integer Values to Strings 9.1.5      ...
View in text
Excerpt 3
ME 1. Copyright © 2025 by Randall Hyde. All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or...
View in text
Excerpt 4
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...
View in text
Excerpt 5
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...
View in text
Excerpt 6
s Compile-Time Language     Covers the Gas macro facilities. Macros are powerful constructs enabling you to design your own assembly language statements that...
View in text
Excerpt 7
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...
View in text
Excerpt 8
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...
View in text
Tags
AI categories
Programming LanguageGo
ISBN: 1718502826
Publisher: No Starch Press
Publish Year: 2025
Language: English
Pages: 1064
File Format: EPUB
File Size: 10.0 MB