EmbeddedRelated.com
Books

Modern Assembly Language Programming with the ARM Processor

Pyeatt Ph.D., Larry D 2016

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.

Get This Book

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

  1. Introduction to ARM Architecture and the Development Environment
  2. Binary, Hex, and Number Representations; Signed and Unsigned Arithmetic
  3. Assembler Basics and Program Structure
  4. ARM Core Instruction Set: Data Processing and Branching
  5. Addressing Modes, Memory Access, and Data Movement
  6. Procedures, Stacks, and Calling Conventions
  7. Interrupts, Exceptions, and Bare‑Metal System Services
  8. Fixed‑Point Arithmetic and Representative Algorithms
  9. Floating‑Point Concepts and Programming with ARM VFP
  10. NEON SIMD: Concepts and Practical Vector Programming
  11. Optimization Techniques and Performance Considerations
  12. Debugging, Emulation, and Toolchain Workflows
  13. Practical Bare‑Metal Examples and Project Case Studies
  14. Appendices: Instruction Summaries, Assembly Directives, and Reference Material

Languages, Platforms & Tools

ARM assemblyC (interfacing examples)ARM architecture (ARMv7/ARMv8)Cortex‑A, Cortex‑R, and Cortex‑M families (concepts applicable across cores)Bare‑metal embedded boards and development kitsGNU Arm Embedded Toolchain (arm-none-eabi GCC/AS/LD)Keil MDK / uVisionGDB (arm‑gdb), OpenOCDQEMU (emulation) and hardware debuggersArm Development Studio / DS‑5 (where applicable)

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.

Related Books