- Taschenbuch: 500 Seiten
- Verlag: Wordware Publishing Inc.; Auflage: Pap/Cdr (März 2002)
- Sprache: Englisch
- ISBN-10: 1556229038
- ISBN-13: 978-1556229039
- Größe und/oder Gewicht: 19 x 4,9 x 23,7 cm
- Durchschnittliche Kundenbewertung: 1 Kundenrezension
- Amazon Bestseller-Rang: Nr. 654.090 in Fremdsprachige Bücher (Siehe Top 100 in Fremdsprachige Bücher)
Virtual Machine Design and Implementation C/C++ (Englisch) Taschenbuch – März 2002
Es wird kein Kindle Gerät benötigt. Laden Sie eine der kostenlosen Kindle Apps herunter und beginnen Sie, Kindle-Bücher auf Ihrem Smartphone, Tablet und Computer zu lesen.
Geben Sie Ihre Mobiltelefonnummer ein, um die kostenfreie App zu beziehen.
Wenn Sie dieses Produkt verkaufen, möchten Sie über Seller Support Updates vorschlagen?
This 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.
Blunden performs a walkthrough and deals with memory management, machine architectures, I/O handling etc. Every single one of the topics is covered in "depth" - to a certain degree, of course, but there are literature lists at the end of each chapter that provide links for further reading.
All in all, the book is very well and clearly written and understandable. Still, two very important issues are not covered in the implementation of the presented virtual machine: garbage collection and thread management are only briefly introduced, but there are no implementation guidelines as can be found for any other topic.
Die hilfreichsten Kundenrezensionen auf Amazon.com
I skim through the book, and didn't find any information that could be useful for the VM I was building. It talks a lot about how a real machine works and how to simulate it in software. The C/C++ code in the book is not that bad, but I guess we should expect a bit more from someone who wrote a book with C/C++ in the title. There are plenty of bad examples in the book that may mislead novice C++ developers.
To begin with, this book is billed for intermediate to advanced programmers. This book has little to offer for an "advanced" programmer. However, it's not bad for an advanced beginner to intermediate reader. The concepts discussed are simplistic. Only one short chapter is dedicated to the actual virtual machine. Blunden devotes more pages to discussion of basic data structures like symbol tables and hash tables than he does to his virtual machine. His biggest chapter is devoted to implementing a macro assembler for his machine. A discussion I would expect in a book on compiler design, but which I found somewhat unwelcome here.
His coverage of virtual machines leaves much to be desired. The two primary topics that interested me, multi-threading and garbage collection, aren't even covered. Blunden describes them as complex topics, and therefore he leaves them out of his virtual machine. Since the reason I read books is for discussion of "complex" topics, this feels more like a cop-out than a design decision to me.
If you read his code, please don't try to emulate his coding style. He describes data types that he never uses, choosing instead to reimplement concepts every time he uses them. He exports public members of C++ classes, uses descriptive function arguments like "ptr", and spends a lot of time talking about optimizing things that don't really require optimization. (Loop unrolling your debugging statements?) He switches to C++ halfway through the book, but fails to take advantage of any of C++'s strengths. I almost get the feeling his editor told him that his book would sell better if he listed C++ in the title.
I'm sure Blunden is a smart man, so I'll give him the benefit of the doubt and assume that his assembly language background is peeking through. But if your interest is virtual machines, I suggest one of the many good books on the Java VM. If your interest is compilers, stick with the Dragon book, or check out Allen Holub's book if the Dragon book is too rigorous. If you're looking to learn C or C++, look elsewhere.
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.
Ähnliche Artikel finden
- Fremdsprachige Bücher > Computer & Internet > Informatik > Künstliche Intelligenz
- Fremdsprachige Bücher > Computer & Internet > Informatik > Systemanalyse & Design
- Fremdsprachige Bücher > Computer & Internet > Programmieren > C
- Fremdsprachige Bücher > Computer & Internet > Programmieren > Sprachen & Tools