What this book covers
- Chapter 1, From Finite State Machines to the Computers, introduces the notion of digital computers via the finite state machine that is used to model simple control systems. From there, we introduce the concept of algorithms and programs. Once we know what we want a computer to do, we can think about what we need to implement a computer.
- Chapter 2, High-Speed Introduction to Python, provides the initial background in Python that is required to take the first steps on the way to implementing a computer using Python.
- Chapter 3, Data Flow in a Computer, demonstrates how information flows around a computer during the execution of a program. It is this data flow that we have to implement when we are simulating a program in software.
- Chapter 4, Crafting an Interpreter – First Steps, begins the journey to a simulator. Now that we have been introduced to the concept of a computer and a little Python, we can go further and describe the fundamental ideas behind a computer simulator. In this chapter, we also look at the nature of computer instructions.
- Chapter 5, A Little More Python, expands our knowledge of Python and introduces us to vital topics such as Python’s dictionaries, which provide tools that greatly simplify the design of a computer simulator.
- Chapter 6, TC1 Assembler and Simulator Design, is the heart of this book. Here, we discuss the components of a simulator and then provide a program that can simulate a hypothetical teaching computer, TC1.
- Chapter 7, Extending the TC1, adds further facilities to the simulator, such as data checking and creating new instructions.
- Chapter 8, Simulators for Other Architectures, looks at different types of computer architecture and describes alternative simulators.
- Chapter 9, Raspberry Pi – An Introduction, changes course. Here, we look at the popular Raspberry Pi and the ARM processor at its core. In particular, we learn how to enter a program in ARM assembly language and run it in debugging mode.
- Chapter 10, A Closer Look at the ARM, examines ARM’s instruction set in greater detail and provides a foundation for writing programs in assembly language.
- Chapter 11, ARM Addressing Modes, looks at the addressing modes of the ARM in greater detail and explains some of its special features.
- Chapter 12, Subroutines and the Stack, is really an extension of the previous chapter because we look at the way in which the ARM uses its addressing modes to implement stack operations, which are so important in assembly language programming.