Modern Assembly Language Programming with the ARM Processor
Modern Assembly Language Programming with the ARM Processor carefully explains the concepts of assembly language programming, slowly building from simple examples towards complex programming on bare-metal embedded systems. Considerable emphasis is put on showing how to develop good, structured assembly code.
More advanced topics, such as fixed and floating point mathematics, optimization, and the ARM VFP and NEON extensions are also covered, helping users understand representations of, and arithmetic operations on, integral and real numbers in any base, gain a basic understanding of processor architectures and instruction sets, write ARM assembly language programs, quickly learn any new assembly language, implement the procedures and mechanisms for handling interrupt processing and performing, interface assembly language with high-level languages such as C/C++, and explore ethical issues involving safety-critical applications.
- Concepts are illustrated and reinforced with a large number of tested and debugged assembly and C source listing
- Intended for use on very low-cost platforms, such as the Raspberry Pi or pcDuino, but with the support of a full Linux operating system and development tools
- Includes discussions of advanced topics, such as fixed and floating point mathematics, optimization, and the ARM VFP and NEON extensions
Why Read This Book
You will learn how to read, write, and structure ARM assembly programs from first principles through real bare‑metal examples, gaining practical skills for firmware and low‑level system work. The book emphasizes numeric representations, fixed and floating‑point arithmetic, and ARM VFP/NEON extensions so you can write correct, efficient code and understand processor behavior beneath high-level languages.
Who Will Benefit
Embedded firmware engineers, students, and systems programmers who need a practical, structured grounding in ARM assembly for bare‑metal development, numeric algorithms, and performance tuning.
Level: Intermediate — Prerequisites: Basic understanding of programming (C helpful), fundamentals of computer organization (CPU, memory, registers), and introductory digital logic or electronics; some embedded systems exposure is useful but not mandatory.
Key Takeaways
- Write correct, well‑structured ARM assembly programs using proper procedures, stacks, and calling conventions.
- Implement and reason about fixed‑point and floating‑point algorithms, including use of the ARM VFP unit.
- Leverage NEON SIMD instructions to accelerate data‑parallel computations.
- Handle interrupts and exceptions on bare‑metal ARM systems and integrate assembly with C.
- Optimize assembly code for size and speed using addressing modes, instruction selection, and pipeline awareness.
- Use common toolchains and debugging techniques to build, test, and profile low‑level firmware.
Topics Covered
- Introduction to ARM Architecture and the Development Environment
- Binary, Hex, and Number Representations; Signed and Unsigned Arithmetic
- Assembler Basics and Program Structure
- ARM Core Instruction Set: Data Processing and Branching
- Addressing Modes, Memory Access, and Data Movement
- Procedures, Stacks, and Calling Conventions
- Interrupts, Exceptions, and Bare‑Metal System Services
- Fixed‑Point Arithmetic and Representative Algorithms
- Floating‑Point Concepts and Programming with ARM VFP
- NEON SIMD: Concepts and Practical Vector Programming
- Optimization Techniques and Performance Considerations
- Debugging, Emulation, and Toolchain Workflows
- Practical Bare‑Metal Examples and Project Case Studies
- Appendices: Instruction Summaries, Assembly Directives, and Reference Material
Languages, Platforms & Tools
How It Compares
Similar in practical assembly focus to Hohl & Hinds' ARM Assembly texts but places more emphasis on numeric representations, VFP/NEON, and structured bare‑metal programming than processor‑specific system details found in Joseph Yiu's Cortex guides.













