ARM A32 ASSEMBLY LANGUAGE

Posted on November 18, 2017

“I have found this book to be an excellent read. I have learned a great deal about ARM”  5 Stars.

ARM A32 ASSEMBLY LANGUAGE is the complete guide to learning ARM programming bar none. This comprehensive volume is applicable to all current 32-bit ARM architectures including ARMv7 and ARMv8.  This includes the processors available on most Single Board Computers and development boards currently available.

Ideal for the novice, this book will take you from first principles through to becoming a competent ARM programmer. It covers all aspects of the ARM instruction set including Thumb, Neon, Advanced SIMD and Vector Floating Point Programming.

The book covers the new Unified Assembly Language (UAL) and the use of AArch32 State in the latest range of ARM microprocessors. Program examples are provided that are written using the GCC Assembler and Compiler which is freely available for most computer operating systems.

In my opinion this book is 10/10 and a must for anybody starting off or getting back into assembly language…

amazon_comamazon_co_uk

Probably one of the best assembly language books I’ve seen. Although I used to do some assembly language programming many years ago, this book was a very good refresher and clearly explained… Highly recommended.

In my opinion this book is 10/10 and a must for anybody starting off or getting back into assembly language…Thank’s Bruce for a valuable resource!… By Peter GostanianPublished on wordery.com

Taking You From Beginner To Expert

Providing lucid descriptions, award-winning author Bruce Smith keeps things simple and includes plenty of program examples you can try for yourself. Ideas and concepts are introduced in the order required so you should never be left wondering. Just some of the many features include:

  • 320 pages
  • Practical approach with program example
  • Unified Assembly Language compatible
  • Uses FREE GCC assembler and linker
  • ARM registers and arrangements
  • Addressing modes
  • Use of operating system Syscalls
  • Debugging with GDB
  • Using libc function calls
  • Programming the GPIO
  • Thumb – 16-bit and 32-bit (T16 and T32)
  • Floating Point Programming
  • Advanced SIMD and Neon programing
  • Number crunching examples
  • ARM Architecture
  • Using C to create Assembler
  • AArch32 and AArch64 (64-bit ARM)
  • Exception Handling
  • ARMv8 Overview
  • Compatible with popular Single Board Computers: Arduino, BeagleBoard etc
  • Bruce Smith – Award Winner – 50+ books and over 500,000 sales!

 

Probably one of the best assembly language books I’ve seen. Although I used to do some assembly language programming many years ago, this book was a very good refresher and clearly explained… Highly recommended.

In my opinion this book is 10/10 and a must for anybody starting off or getting back into assembly language…Thank’s Bruce for a valuable resource!… By Peter GostanianPublished on wordery.com

ARM A32 ASSEMBLY LANGUAGE: Contents List

1: Introduction

Fully Clothed, ARM Board Compatibility, Learn By Example, What Will You Learn?, Notation in Use, Companion Website, Free Books, Acknowledgements

2: Starting Out

Numbers with Meaning, ARM Instructions, The Transformation Process, Why Machine Code?, Language Levels, Into Orbit, RISC and Instruction Sets, Assembler Structure, Error Of Your Ways.

3: First Time Out

The Command Line, Creating A Source File, Come to the Execution, Assembler Errors, The Components, Lack of _start, Linking Files, Tidying Up, A Comment On Comments

4: Bits of a RISC Machine

Binary to Decimal, Decimal to Binary, Binary to Hex, Hex to Decimal and Back, Binary Arithmetic, Addition, Subtraction, Twos Complement Numbers, When Two’s Doesn’t Add Up

5: ARM Arrangements

Word Lengths, Byte and Word Accessed Memory, Registers, R15 – Program Counter, Current Program Status Register, Bits and Flags, Setting Flags, S Suffix, R14: The Link Register, R13: Stack Pointer.

6: Data Processing

Arithmetic Instructions, Addition, Integer to Register Transfer, Subtraction, Multiplication, Move Instructions, Compare Instructions.

7: Ins and Outs

SWI and SVR Commands, Writing to the Screen. Reading From the Keyboard, Makefiles, eax and Others.

8: Logical Operations

Logical AND, Logical OR, Logical EOR, Logical Instructions, ORR to Convert Character Case, Toggling Characters with EOR, Bit Clear with BIC, Flag Tests, Syscall Registers

9: Conditional Execution

Single Flag Condition Codes, Multiple Flag Condition Code, Mixing the S Suffix.

10:  Branch, Compare and SWI

Branch Instructions, The Link Register, Using Compare Instructions, Compare Forward Thinking, Using Conditionals Effectively, Branch Exchange.

11: Shifts and Rotates

Logical Shifts, Logical Shift Right, Arithmetic Shift Right, Rotations, Extended Rotate, Uses of Shifts and Rotates, Immediate Constant Range.

12: Smarter Numbers

Long Multiplication, Long Accumulation, Division and Remainder, Smarter Simple Multiplication, Staurdation and Q Flag.

13: Register 15

Pipelining, Calculating Branches.

14: Debugging with GDB

Frozen Cases, Assembling for GDB, The Disassembler, Breakpoints, Memory Dump.

15: Data Transfer

ADR Directive, Indirect Addressing, Immediate Constants, Pre- Indexed Addressing, Accessing Memory Bytes, Address Write Back, Post- Indexed Addressing, Byte Conditions, PC Relative Addressing.

16: Block Transfer

Counting Options, Write Back, Block Copy Routine.

17: Stacks

Push and Pull, Stack Growth, Stack Application.

18: Directives and Macros

Data Storage Directives, ALIGNing Data, Macros.

19: Using libc

Using C Functions in Assembler, Source File Structure, Investigating the Executable, Number Input with Scanf, Getting This Information.

20: Writing Functions

Function Standards, Register Use, More Than Three, Preserving Link and Flags.

21 : Disassembling C

GCC – The Swiss Army Knife, A Simple C Framework, Getting the Assembler, Building Blocks, A printf Example, Frame Pointer Variables, Disassembling Syscalls, n Summary

22 : Floating Point

VFP2 Architecture, The Register File, Managing and Printing, Load, Store and Move, Precision Conversion, Vector Arithmetic, GDB VFP Update.

23: VFP Control Register

Conditional Execution, Scalar and Vector Operations, Which Type of Operator? Len and Stride.

24: Neon

Neon Instructions, Addressing Modes, Neon Intrinsics, Neon Assembler, Neon Arrays, Matrix Math, VLD and VST in their Stride, Load of Others.

25: Thumb Code

Differences, Assembling Thumb, Accessing High Registers,  Stack Operators, Single and Multi- Register, Functions in Thumb.

26: Unified Assembler

Thumb Changes, New A32 Instructions, Compare by Zero, Assembling UAL.

27: Connectivity

The GPIO Controller, Building the Code, Virtual Memory, Using and Adapting , Other GPIO Functions

28: Exception Handling

Modes of Operation, Vectors, Register Arrangements, Exception Handling, MRS and MSR, Interrupts When?, Your Interrupt Decisions, Returning From Interrupts, The System Control Register, Writing Interrupt Routines.

29: Opcodes and Pipelines

A Data Processing Example, Thumb Examples, Pipeline, Neon Pipeline, Instruction Cycles.

30: System On Chip

The ARM Chip & Instruction Sets, Co- Processors, Pipeline, Memory & Caches,  The GPU, Single Board Computers.

31: ARMv8 Overview

Different Compatability,  A64 Register Set, Syntax Differences, Exceptions, AArch32 Processor Modes, AArch32 State Exceptions, AArch32 Exceptions in AArch64, Finally

Appendices

a: GCC Updates
b: ASCII Character Set
c: Companion Website
Index
amazon_comamazon_co_uk