- Introduction
- The Computing Device
- Number Systems
- Assembly Tools
- Translating Bits to Commands
- Assembly Syntax
- The RISC Design Philosophy
- The ARM Design Philosophy
- Embedded Systems with ARM Processors
- ARM Bus Technology and AMBA Bus Protocol
- Memory
- Peripherals
- Von Neumann and Harvard architecture
- Cache and Tightly Couple Memory
- Memory Management extensions
- Coprocessor extensions
- Remotely accessing your Raspberry Pi by SSH
- Remotely accessing your Raspberry Pi by Remote Desktop Connection
- Installing CodeBlocks IDE on Raspberry Pi
- Data Types
- ARM7TDMI Registers
- ARM Cortex-M Registers
- ARM Data Flow Model
- The Pipeline
- ARM Processor Family
- ARM Cortex-A and Cortex-R
- ARM Cortex-M
- Section Summary
- Structure of an Assembly Module
- The ARM,Thumb and Thumb-2 Instruction Sets
- Predefined Register Names
- Frequently used Directives
- GCC ARM Assembly Directives
- Difference between Raspberry Pi Assembly code and Kiel ARM Assembly code
- How to Assemble,Link and Run with Raspberry Pi Terminal
- Debugging with GDB
- Coding : Allocating space in memory with the SPACE Directive
- Overview of Binary Operators
- Coding : Swapping Register Content
- Coding : Renaming Registers
- Coding : Creating an Assembly program with the Raspberry Pi Terminal
- Coding : Debugging an Assembly program with the Raspberry Pi Terminal
- Memory Demarcations
- Frequently used Load/Store Instructions (Part I)
- Frequently used Load/Store Instructions (Part II)
- Frequently used Load/Store Instructions (Part III)
- Pre-Indexed Addressing
- Post-Indexed Addressing
- Endianness
- Defining Memory Areas
- The Encoding of the MOV Instruction
- The ARM Rotation Scheme
- Loading Constants with the LDR Instruction
- Loading Constants with the MOVW and MOVT Instructions
- Loading Labels with ADR, ADRL and LDR Instructions
- Coding : Solving a Simple Equation Method 1
- Coding : Solving a Simple Equation Method 2 - Storing Constants in Memory
- Coding : Solving a Simple Equation Method 3 - Using Register Relative Addressing
- Coding : Solving a Simple Equation Method 4 - Compact Code
- Coding : Cleaning up your project
- Coding : Adding files to your project
- Flags
- The N and V Flags
- The Z and C Flags
- Compare/Test Instructions
- Overview of Boolean Operations
- Coding : Experimenting with the CPSR Flags
- Coding : Experimenting with the Carry Flag
- Coding : Experimenting with the Carry and Overflow Flags
- Introduction to Shifts and Rotations
- Understanding Logical Shifts
- Understanding Rotations
- Some Shift and Rotate Examples
- Overview Addition and Subtraction Instructions
- Coding : Finding the Maximum Value in a Dataset
- Coding : Adding Signed Data
- Bit Manipulation Instructions
- Overview of Saturated Math Instructions
- Overview of Multiplication Instructions
- Multiplying by Constants
- Coding : Solving a More Complex Equation
- Overview of the Division Instruction
- Coding : Performing Division by Subtraction
- Overview of DSP Instructions
- Fractional Notation
- Understanding Q Notation
- Introduction to Branches and Loops
- Branching
- Compare and Branch