Disclaimer: Pardon my French :)
I have bought "Virtual Machine Design and Implementation in C++"
by Bill Blunden. This book has very positive reviews (see
slashdot or amazon.com). It seems to impress people by the
apparent width of covered topics. Most of it is off topic. The
book gives to the moderately knowledgeable reader no insight
about virtual machines or even about language compilation.
No architectural clues. Absolutely nothing about tight run loops,
copy on write, compiling , optimizing code (SSA, tail calls,
continuation passing style) or jitting code. The remarks about
memory management are laughable. The book present a trivial VM
and make no attempt to compare the features of existing VMs.
The author has the chutzpah, pedantry or naiveté to compare himself
to Knuth: "If I had money, I could offer an award like Don Knuth
(pronounced Ka-Nooth)". But it is unclear that the book has been
thru any reviewing or editorial process before publishing.
I don't say there are obvious typos or so many factual errors.
The book is just vain and vacuous.
It is difficult to make a review because the book has about no
substance concerning its stated subject: virtual machines. The
author takes tangent after tangent and gives his opinion about
almost anything concerning the computer industry, cramming
irrelevant knowledge and speaking of all the "wars" he has waged.
He usually states in one paragraph one can be said in one
sentence. Most of code in the book has no interest whatsoever,
like gigantic switches or declaration of symbolic constants.
Visually disturbing notes are plain rants or state the obvious:
"virtual machines are run-time systems, but not all run-time
systems are virtual machines" (boy! I was thinking that was VMs
all the way down). One note even propagates the old urban myth
about TCP/IP: "[the DoD] was originally interested in designing a
command and control network that could survive a nuclear war".
In Chapter 1, "History and Goal", the author conveys the idea
that coding on top of a virtual machine is a good protection
about obsolescence of the real architectures. But the book will
hardly convince you about the relevance of the presented VM
according to this criteria because it apparently only runs on
x86. The author states his goals about the VM he presents: 1/
portability 2/ simplicity 3/ Performance. Modulo order, these
properties are true of any sensical software project. This
does not give a clue about what is the purpose of the VM. He
cites Java, so the purpose may be to run such a language. But
after reading the book, I had no further clue.
Chapter 2, 5 and 7 is about the presentation of his assembler.
Don't ask me about the logic or the interest of the presentation.
Almost nothing is specific about VM. So why bother to say more?
Chapter 3 talks about a debugger.
Chapter 6 is about virtual interrupts. The author seems to have
used DOS as a model and is clearly limiting his discussion about
x86. So much about portability.
Chapter 8 called "advanced topics" explains the software industry
progression toward increased abstractions going from binary to
high level languages. There is a comparaison between Linux and
Windows. Go figure.
The anemic index is 6 pages and reflects the book, almost none of
the entries are specific to VM.
Each chapter is followed by a reference with a book list and an
explanation of what they cover. Certainly better that the
gratuitous show off list of academic papers. The choice of listed
books is usually pretty good but often the comments show the
cluelessness of the author. I enjoyed this one concerning the
Tanenbaum book about OSes: "People don't often realize that it
was Minix that led to the development of Linux. I don't think
people give Andrew enough credit. His ideas on modularity are
The back cover says "covers in detail features such as memory
management, TCP/IP networking (...) everything expected from a
commercial system. In fact the author decides that real garbage
collection is too slow and too complex, does not even consider
reference counting and decides to roll his own malloc. I don't
know what TCP/IP has to do with VM...
The book certainly does not fulfill the the back cover promises.
It seems to me that the described VM is to VMs what a "hello
world" is to real C programs.
I did not bother to see the content of the bundled CD-ROM.