I’ve written two introductory-level books about computer hardware and how it’s programmed. One is based on the 64-bit ARM instruction set, AArch64, using a Raspberry Pi as an example. The other is based on the 64-bit Intel/AMD instruction set, x86-64, using Ubuntu Linux on a PC as an example. Both books are significant rewrites of the books I originally offered online. The editors at No Starch Press and the technical reviewers they used helped me to write much better books.
-
Introduction to Computer Organization, ARM version. I provide ancillary resources for this book. The superseded edition can only be used online, and I no longer maintain it. Also, it uses the 32-bit ARM instruction set, AArch32.

-
Introduction to Computer Organization, x86-64 version. I provide ancillary resources for this book. The superseded edition can only be used online, and I no longer maintain it.

The ancillary resources for each book will help you to get the most from reading my books, including:
- Source code for the example programs in the book; I don’t include the compiler-generated assembly language because you can generate those files from the provided C/C++ source code files.
- Solutions to most of the Your Turn exercises
- A list of corrections to the text; if you discover any errors, please send me email. I like to give credit to the person who finds the error; please let me know if it’s okay to use your name.