Vous voulez voir cette page en français ? Cliquez ici.

Have one to sell? Sell yours here
Virtual Machine Design and Implementation C/C++
 
See larger image
 

Virtual Machine Design and Implementation C/C++ [Paperback]

Bill Blunden
3.4 out of 5 stars  See all reviews (13 customer reviews)

Available from these sellers.



Product Details


Product Description

Book Description

With the emergence of multiplatform production systems and network-centric computing, the software industry has witnessed the resurgence of the virtual machine. Rather than committing to any single operating system, software engineers have embraced platform-neutral development tools and run-time environments. Virtual Machine Design and Implementation in C/C++ provides an in-depth look at the construction and underlying theory of a fully functional virtual machine and an entire suite of related development tools.

The book begins with a discussion of the theoretical underpinnings of the author's HEC virtual machine and its fundamental design goals, and continues with a section on the implementation of the virtual machine and its debugger. The final section focuses on the HEC assembler, including its interface to the native operating system, interrupts, the assembly language, and how to implement object-oriented constructs. There is also an extended discussion of porting the HEC virtual machine to other platforms. To assist in accomplishing this goal, the author offers a critical path analysis of the development process so that readers can build both their own virtual machine and an entire operating system.

The companion CD contains the source code for both the Win32 and Linux ports of the HEC distribution, including the HEC virtual machine, assembler, debugger, and associated development utilities.

About the Author

Bill Blunden has a bachelor's degree in physics from Cornell and a master's degree in operations research. He has spent the past ten years performing R&D on enterprise middleware, implementing distributed computing software, and working with security protocols.

Tag this product

 (What's this?)
Think of a tag as a keyword or label you consider is strongly related to this product.
Tags will help all customers organize and find favorite items.
Your tags: Add your first tag
 

 

Customer Reviews

13 Reviews
5 star:
 (6)
4 star:    (0)
3 star:
 (2)
2 star:
 (3)
1 star:
 (2)
 
 
 
 
 
Average Customer Review
3.4 out of 5 stars (13 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most helpful customer reviews

2.0 out of 5 stars This is an odd book, May 28 2004
By 
B. Schick (Seattle, WA USA) - See all my reviews
(REAL NAME)   
This review is from: Virtual Machine Design and Implementation C/C++ (Paperback)
It reads like the personal diaries of Bill Blunden as he endeavors to build the HEC virtual machine. The best aspect of this book is that Mr. Blunden has done a decent amount of investigations into the process of building a VM. He describes all of the components of his VM with abundant detail and clear writing. The HEC VM is more of a toy than a commercial VM, but its design is informative. Mr. Blunden also gets credit for included error handling in his code. Too many other books skip error handling "to save space". This book also happens to be one of the only VM books I've found that is not about the Java VM (which is a stack machine as opposed to a register machine like HEC).

Unfortunately there are several problems with the book. The biggest problem is confusion about its target audience. In many places the book appears to be written for totally inexperienced developers while at other times it assumes a decent amount of existing knowledge. For example, the book describes that disk access is slower than RAM access, what a debugger does, provides lots of details and code examples of simple data structures like dynamic arrays, etc. At the same time the book assumes good working knowledge of the C, C++, and Java languages, an understanding of file I/O, and other concepts. How many developers know C/C++ and Java but don't know what a debugger is for?

The next problem with the book is the actual code. It has many security problems such as unsafe strcpy and scanf usage, too many unnecessary preprocessor macros (created for unconditional code blocks that are only used once), and strange C style C++ code (classes that are passed their own data members).

The final issue is the book's personal diary style. Some people may enjoy this, but I did not. The book is filled with little sections labeled "Rant" where Mr. Blunden goes off on something. In a strange section about the future of computers he comes up with this: "Imagine how a government could use this kind of tool to repress its citizens by instituting behavior modification on a national scale." And what does this have to do with building a VM? If I wanted a novel I'd buy one (or write one in an Amazon review :)

If you are a C/C++ developer and want details about building a VM, this book gets very slow and you will end up skipping 30 to 60 percent. If you are an inexperienced developer, however, the example code may be over your head. In the end, I'd say this book is best suited for new developers (or even non-developers) who want background information about computers and virtual machines, but don't care about using the example code. The book would be a 3 to 3.5 star for someone like that.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5.0 out of 5 stars Truly Inspiring, Mar 9 2004
This review is from: Virtual Machine Design and Implementation C/C++ (Paperback)
Blunden's "Virtual Machine Design and Implementation in C/C++" inspired me to write my own VM, and that is far more than I can say for other books. This book is so well written that it changed the way I thought and I felt enlightened. This is one of my all time favourite books - period. On *any* subject.

If you're a computer engineer or are intimately familiar with computer architecture or VMs, you will probably be disappointed because you'll cover ground you're already familiar with. But for everyone else, be prepared to stay up all night reading. You WON'T be able to put this book down!

Blunden starts at the very beginning of designing and specifying a virtual machine, then justifies his design choices and discusses alternatives. He presents the design and implementation of the HEC VM *System* - not just a VM. You'll go all the way here: assembler, debugger and the kitchen sink. If you're mystified at how assemblers, debuggers, compilers, abstract/virtual machines work - or even real computers and indeed operating systems, then you'll LOVE this book.

Blunden covers memory management in detail early in the book, and discusses instruction set architecture in detail. He covers the HEC runtime and the way opcodes are interpreted and executed. Then he discusses the design and implementation of an assembler and debugger. HEC's compiled assembly files/object code files/executable program files are dissected and studied in detail, along with HEC's entire instruction set and its format. System interrupts are treated in detail. Interfacing with the host system and using the TCP/IP networking facilities available there is discussed and illustrated with code from the HEC VM. You could build a sophisticated VM like the Java Virtual Machine from what you'll learn in this book. Even if you don't find HEC itself very exciting, the concepts you'll learn by following the book and studying HEC will stick in your brain and inspire you when you design and write your own systems; virtual machine, operating system, assembler, debugger, or whatever.

Even if VMs are only somewhat related to what your project is - such as an operating system or assembler, debugger and linker - you WILL find this book inspiring and packed with readable and useful information and insights.

The title is a little misleading however - there is no C++ to speak of in this book, save for a couple of pages toward the end. (Typical dishonesty from marketing and sales types). It's all C.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


2.0 out of 5 stars Should be more synchronized with recent development, Jan 3 2004
By 
Boris Burger (Bratislava, Slovakia) - See all my reviews
This review is from: Virtual Machine Design and Implementation C/C++ (Paperback)
I am more or less dissapointed with this book's contents, largely because I expected a bit more modern treatment of the subject.

What greatly dissapointed me was that the author doesn't compare his VM against others, which is quite a pity because there are modern languages interpreted using VMs like Java, Perl, Python and many more. This and some more facts suggest that the author is not in sync with current development in the field.

An another surprise for me is that the VM introduced is register oriented. I don't quite understand and agree with the arguments behind this choice, as opposed to stack based VMs. The author explains about computer processors that utilized the stack based architecture in the past that were outperformed by register based CPUs, thus they are not manufactured anymore. Which is a misleading fact, because registers of a VM are located in memory arrays, and suffer from the same efficiency penalties as the stack does.

Targeting a register based VM is much more difficult than with stack based VMs, but the author doesn't take attention to this fact. More precisely, he doesn't say a word about generating code for his VM aside from a simple assembler, that is explained at great lengths in a separate chapter, which I find somewhat uninteresting and off the topic, because only a few people really write code for VMs in assembler.

The book contains lots of code listings, that the author comments on well. The language used is much more C than C++, which is a pity in my opinion, but hey, the programming tastes differ.

What is worth noting, the author doesn't go beyond a naive one-large-switch VM implementation, which is not to blame, but it would be appreciable if the author noted some optimization techniques for VMs like direct-threading, inline-threading and just-in-time compiling.

Bill Blunden is overproductive in some areas, for example he tends to describe on a number of pages techniques like threading, but in the end only to explain that the VM doesn't contain any thread support at all.

In the end, I enjoyed some parts of the book, as it contains some notes about computer science history. But I can't avoid the feeling that the author got stuck in '80s and is not aware of the recent development.

I do not say that the book is bad, it just didn't fit me.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

Share your thoughts with other customers: Create your own review
Want to see more reviews on this item?
 Go to Amazon.com to see all 17 reviews  3.1 out of 5 stars 
 
 
Most recent customer reviews











Only search this product's reviews



Listmania!

Create a Listmania! list

Look for similar items by category


Look for similar items by subject


Feedback