Book Image

Computer Architecture with Python and ARM

By : Alan Clements
Book Image

Computer Architecture with Python and ARM

By: Alan Clements

Overview of this book

This comprehensive guide offers a unique and immersive learning experience by combining Python programming with ARM architecture. Starting with an introduction to computer architecture and the flow of data within a computer system, you’ll progress to building your own interpreter using Python. You’ll see how this foundation enables the simulation of computer operations and learn ways to enhance a simulator by adding new instructions and displaying improved results. As you advance, you’ll explore the TC1 Assembler and Simulator Program to gain insights into instruction analysis and explore practical examples of simulators. This will help you build essential skills in understanding complex computer instructions, strengthening your grasp of computer architecture. Moreover, you’ll be introduced to the Raspberry Pi operating system, preparing you to delve into the detailed language of the ARM computer. This includes exploring the ARM instruction set architecture, data-processing instructions, subroutines, and the stack. With clear explanations, practical examples, and coding exercises, this resource will enable you to design and construct your own computer simulator, simulate assembly language programs, and leverage the Raspberry Pi for ARM programming.
Table of Contents (18 chapters)
1
Part 1: Using Python to Simulate a Computer
Free Chapter
2
Chapter 1: From Finite State Machines to Computers
10
Part 2: Using Raspberry Pi to Study a Real Computer Architecture

Who this book is for

For many years, I have taught computer architecture and have used simulators to teach assembly language. This approach demonstrates what instructions do but not how they do it or how they are designed, decoded, and executed. I decided to create a simple instruction simulator for class use. This book evolved from that project.

My target audience can be divided into four main groups, as follows:

  • Students who are taking a computer architecture course and would like to enhance their experience of computer architecture by experimenting with their own CPUs by means of simulation. This approach would increase the depth of their knowledge of computer architecture and enhance their understanding of the trade-offs that the computer designer faces.
  • The non-computer specialist, the layperson, and the enthusiast who would like to know how computers work. By using Python as the design language and providing an introductory course on Python, I have attempted to make the book accessible to those with little or no experience in programming.
  • The Raspberry Pi user. Raspberry Pi has had an immense impact on computer science education. This book provides a brief introduction to Raspberry Pi and shows how it is possible to write assembly language programs in the ARM’s native language. Moreover, Raspberry Pi also provides an environment (Python and its tools) that allows the reader to understand and simulate computers.
  • The reader wanting to learn Python. Although this is not a formal course on Python, it provides a goal-oriented introduction to Python; that is, it applies Python to an actual example. This approach avoids the breadth of a conventional course and enables the reader to construct a practical application with a relatively shallow learning curve.
  • I have not assumed that a beginner reader has absolutely no knowledge of computers at all. This book assumes a very basic knowledge of binary arithmetic and number bases and the basic concepts of Boolean variables.