This very welcome text addresses computer organization and architecture from a strictly conceptual point of view. The constructions are carefully presented, and the small example programs are fairly easy to follow. The author is primarily concerned with the ways and means of organizing computations. The relationship between algorithmic problem specifications and the basic mechanisms and runtime structures needed for transforming these specifications (step-by-step) into problem solutions is emphasized throughout the book. The exposition completely abstracts from concrete programming languages, and from concrete machine architectures, their instruction sets, data formats, addressing modes, and register sets. (At the very end of the book, two representative real machine architectures are presented, and their relationship to the various abstract machines is discussed.)
The author takes the lambda calculus as his starting point for a discussion of various abstract computing machines. He follows what is commonly known as a language-directed approach toward building computing machines. The emphasis is on the basic mechanisms and runtime structures necessary to perform algorithmically specified computations, rather than on the handling of bits, bytes, and addresses on the register-transfer structure of concrete hardware. Although the topic of the book is not in the mainstream of a computer science curriculum, it could very easily be used in a graduate course on computer organization and architecture that emphasizes the essentials of performing computations mechanically. The presentation is very good, and parts of the text can be left to students as material for self-study.
The book includes an introduction to the lambda calculus. Various fully and weakly normalizing lambda calculus machines are described at different levels of abstraction; two kinds of abstract machines for imperative languages are also described. The machines are specified by sets of state transition rules. Code-executing abstract machines are also described. They transform an applied lambda calculus, taken as a reference source language, to abstract machine code. The choice of the material is very well motivated, in view of the aims stated at the beginning of the book.