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

Analyzing instructions

In this section, we will look at the way in which we take a text string representing an assembly language instruction and process it to create binary code that can be executed by the simulator.

Interestingly, the assembler can be more complicated than the actual simulator. Indeed, we devote relatively little space to the simulator itself in this chapter. We don’t actually need an assembler, because it’s easy to hand-translate assembly-level operations into binary code; it’s just a matter of filling in the fields of the 32-bit instruction format. For example, load register R7 with the literal value 42 can be written as LDRL R7,42. This has a 7-bit opcode, 01 01010, the destination register is r7 (code 111), the two source registers are not used, and their fields can both be set to 000. The literal is 42, or 0000000000101010 as a 16-bit binary value. The binary-encoded instruction is as follows:

00010101110000000000000000101010

It...