Programmers learn by example and develop their skills by examining and modifying working programs. Assembly Language Using the Raspberry Pi is a complete tutorial that provides working example programs to introduce the novice to both CPU hardware and professional software development methods.
- Each of the 20 chapters begins with a complete sample program to examine and test, followed by a description explaining the programming techniques and instructions that are introduced.
- The first program is only 5 lines of code while later ones consist of over 100 lines.
- Every sample program is complete, but leaves room for enhancements and experimentation encouraged by the questions at the end of each chapter.
- ARM processor instructions and features are introduced as needed to implement the increased complexity in programming techniques.
- There is an emphasis on program structure and design patterns that facilitate developing maintainable code (i.e., no spaghetti code).
- The sample programs are documented both in flow diagrams and in comments.
- Over 100 illustrations are included to explain programming techniques as well as ARM and floating point instructions.
- Floating point format and instructions are covered extensively, but gradually introduced through a series of seven chapters covering IEEE 754, VFPv3, and NEON.
- Background material on subjects like binary, two's complement, and hexadecimal appear in fourteen appendices for those who need it, without getting in the way of programmers who don't.
- This book has been "classroom tested" with students having very little if any previous programming experience. The information is complete, allowing it to also be used as an independent study.
- All system and utility software used in the book is included in the standard Raspian Linux distribution intended to be used with the Raspberry Pi 2 and 3.
Assembly language is the computer programming language closest to a computer's "machine code language." Learning to program in assembly language is an excellent practical "hands-on" introduction to the details of computer architecture. Although applications and systems software written in assembly language were once common, assembly language is now primarily a bridge of understanding between computer architects and software developers.