Organization
This book examines both the philosophical motivation behind HEC’s architecture and the
actual implementation. In doing so, the design issues that presented themselves will be
dissected and analyzed. I truly believe that a picture is worth a thousand words, so I
included a diagram or illustration whenever I thought it was appropriate. Sections of
source code are also present throughout the text.
This book is divided into three parts.
Part I — Overview The first two chapters lay the foundation for the rest of the book.
Chapter 1 traces the historical development of computing technology and the requirements
that this evolution has produced. In Chapter 1, I also present a set of design objectives that
define the nature of HEC. In Chapter 2, I sketch out the basic facilities available to the HEC
run-time system and the constraints that directed me towards certain solutions.
Part II — The HEC Virtual Machine In Chapters 3 and 4, I explain the operation of the
HEC virtual machine and debugger. The HEC virtual machine is actually much less com-
plicated than the HEC assembler, so these chapters are a good warm-up for later material.
Chapter 3 covers the operation of the HEC virtual machine. Chapter 4 entails an exhaus-
tive analysis of the debugger. The debugger is embedded within the virtual machine, so
these two chapters are closely related.
Part III — HEC Assembly In the final four chapters, I introduce and discuss topics asso-
ciated with the HEC assembler. I begin in Chapter 5 by investigating the HEC assembler
itself. HEC’s interface to the native operating system is provided by a set of interrupts. Chap-
ter 6 is devoted to enumerating and describing these interrupts. The proper use of HEC’s
assembly language is explained in Chapter 7. Chapter 8 provides some thoughts on how
object-oriented constructs can be implemented in terms of the HEC assembly language.
Companion CD-ROM
Software engineering is not a spectator sport. Eventually you will have to get your hands
dirty. The extent to which you do so is up to you. For those of you who are content to target
and use HEC, I have included a set of binaries on the companion CD-ROM. For those of
you who want to muck about in the source code, I have included the source code to all the
binaries.
I live in California and subsist on a limited, private research budget (i.e., my job). Thus,
I did my initial implementation on Windows. I expect to hear gasps of dismay from the audi
-
ence, and I can sympathize with them. However, I chose Windows primarily because I think
it is easier to use than KDE or GNOME. The alternative would have been to purchase Sun
hardware, which I can’t afford. This does not mean that HEC is stuck on Windows. Porting
the run-time system is fairly straightforward and discussed in Chapter 8.
Introduction
xvi