Compilers Books
Related Subjects: Compiler Construction Kits
More Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250

Used price: $9.39

Incredible knowledge in a fairly small book.Review Date: 2008-08-09
Excellent coverage of language conceptsReview Date: 2007-05-03
Great book.Review Date: 2006-11-10
Probably the best book in the "Survey of Programming Languages" genreReview Date: 2006-02-23
And then it's always illustrative to know about the differences in many common languages, to see where different decisions have been made and what are the consequences. To know that certain legacy languages (e.g. C, Fortran) have features that were not designed because they were the "best" option (for some definition of best), but because the design was constrained by what technology was currently available.
This knowledge is not only required of compiler writers. It should be required of every good programmer. Compiler writers, of course, must know this, and probably in more detail. But Scott's book is a good resource about programming languages, in a level of detail that I believe adequate for all programmers.
There are two main kinds of books on programming languages: they are "survey" and "implementation".
Survey books show how things work in a lot of languages, comparing them along the way. Often the comparison gets down to small details that can affect the meaning, or semantics, of similar programs written in these languages. These books contain one individual chapter for every major topic, and inside such a chapter all languages are compared in relation to the topic. For example, one such chapter covers "subroutines" and then compare a host of different languages on how they implement subroutines.
Implementation books are different: they show how to implement many language features, usually by presenting code for interpreters and compilers. The reader doesn't learn that Ada permits nested subroutines, but instead how nested subroutines really work and how to implement them in a language, for example. A very good book of this kind is "Essentials of Programming Languages" by Friedman, Wand & Haynes.
I normally prefer the implementation books. I'm not really interested if Standard Pascal permits functions to be passed as parameters or not; if I do need to write a Standard Pascal compiler I'll look for a reference manual. I much prefer to know how to implement functions as parameters, and be done with it. Comparing minutiae about extant programming languages can sometimes be very enlightening, and sometimes be mostly dull.
Scott's book, however, really shines because it mixes feature descriptions and implementation details in the presentation. It does the usual routine of comparing a lot of different languages, most of the time the more popular ones like C++ and Java, but it then shows how the implementations differ because of differences in features. The book strikes a good balance between "language design" and "implementation" approaches, although it is clearly slanted towards design, and so more of a traditional "survey" book.
It wins over other survey books by including implementation information about almost every topic, and by the clear writing and style. Also, most survey books concentrate on mainstream imperative languages (nowadays C++, Java, C#) and leave other paradigms to chapters at the end. Scott's book is a bit better in this respect: the presentation often includes Common Lisp, Scheme and Standard ML in the comparisons. There are separate chapters about functional and logic programming too, but considerations about functional programming are spread in the whole book. This is important because paradigms change, and a good programmer must be able to adapt.
It's a good reference for language implementors and good education for most programmers. I look forward to the next editions.
Very Good BookReview Date: 2007-07-20
"It aims, quite simply, to be the most comprehensive and accurate languages text available, in a style that is engaging and accessible to the typical undergraduate....
At its core, PLP is a book about how programming languages work. Rather than enumerate the details of many different languages, it focuses on concepts that underlie all the languages the student is likely to encounter, illustrating those concepts with a variety of concrete examples, and exploring the tradeoffs that explain why different languages were designed in different ways."
I'm not knowledgeable enough to pass judgment on "the most comprehensive and accurate" part. But, I'm pretty happy about the book meeting the rest of those goals. I read through the book on my own and have only a few significant gripes:
- Chapters 2 (Programming Language Syntax) and 4 (Semantic Analysis) are tough to get through. They're basically trying to teach enough about Alphabets, Languages, Regular Expressions, Context-Free Grammars, Finite Automata and Push-Down Automata for the reader to understand what the rest of the book is based on. I've read Cohen's Introduction to Computer Theory, which is dedicated solely to this material and I still had some trouble. With an instructor in a class to walk through the things, it should be doable. But, for a person reading the book on his own, ugh.
- All of Section III: Alternative Programming Models, seems to depart from the format of the rest of the book (as noted in the Preface) where the author talks about the concepts and then how the different languages implement them. Instead, he focuses on the languages themselves and almost seems to be trying to cram a primer into his text. Since the section seems to be a special case, it wouldn't be so bad except that the languages covered are a bit out of the mainstream and so that degree of depth gets pretty unreadable at times. Again, with a professor around, things would be better.
- At a more pedagogical level, the author has a tendency to merely explain what his example Figures are doing in general terms. The problem is that a lot of the code/pseudocode involves fairly advanced structures in several languages (many of which most people won't have run across). It would have made things a lot easier if he had walked his way through each of those Figures line-by-line and explained what each line did. Once again, this wouldn't be that much of a problem in a normal teaching environment since a professor could do it.
Other than those three things, this is a very good and readable book. I rate it at four stars out of five.

Used price: $1.49

rEWARDING AND iNSPIRATIONAL READINGReview Date: 2008-02-27
Pat Dirkson
Author of "The Ink Patch"
"Don't Let Any Dragons
Get'cha!"
Stand up and cheer!Review Date: 2008-02-16
Inspiring, True Stories to Help Overcome ObstaclesReview Date: 2008-02-10
The format of twenty-eight short stories makes THE SPIRIT OF DAVID easy to read, succinct and poignant. Each of the various stories is inspiring in its own way. Every short story's author writes his story in a heartfelt, sincere tone. The book's overall style was comforting to read.
The story behind the book is almost as interesting as the stories in the book. THE SPIRIT OF DAVID celebrates the life of David Schumacher, a California entrepreneur, real estate mogul and educator. Nearly blind at birth, Schumacher became totally blind later in life. Schumacher never allowed his disability to deter him from achieving greatness. The first story in the book is written by Schumacher's widow and details his extraordinary life.
Schumacher never stopped giving, even after his death--his widow will donate a portion of the proceeds from the sale of each book to charity.
I recommend this book be on the nightstand of any reader that needs an occasional pick-me-up from the blues. The uplifting stories remind me that others have overcome setbacks and won against the odds.
janiealogy: "Life is what we make of it!"Review Date: 2008-02-05
William Derringer award winning playwright/short story writerReview Date: 2008-02-10

Used price: $8.45

US Paper MoneyReview Date: 2008-11-12
Excellent!Review Date: 2008-03-22
A Guide Book Of United States Paper Money: Complete Source for History, Grading, and Prices (Official Red Book) Review Date: 2008-03-26
A Guide Book of U. S. Paper moneyReview Date: 2007-10-05
Well worth the price.
A book every collector must haveReview Date: 2007-12-27

It WorksReview Date: 2007-12-22
GreatReview Date: 1999-02-02
Poor font, OK, but a good smell and a great readReview Date: 2003-09-25
Excellent book which still remains excellentReview Date: 1999-10-09
Great Book!Review Date: 1999-06-08

Used price: $28.00

I learned a lot from itReview Date: 2007-03-06
Never try thisReview Date: 1999-04-03
I'd give it a 5 star rating , but I haven't finished it yetReview Date: 2000-01-23
Excellent beginner's book - really does what is claimsReview Date: 1999-02-08
Really gets you into the application. If you are like me, though you will get excited and get on tangents within a couple of chapters. I have used this book now for about 1 year (got through everything in about 2 weeks) and still find uses for examples.
EXCELENTReview Date: 1999-11-20

Used price: $0.46

Superb, just excellentReview Date: 2002-02-01
First of all, this book assumes that you know Java. That is rule 1 that many books fail to observe. This book is about wireless Java so it does not waste space teaching you Java. If you want to learn Java, you'll read a book that is written specifically for that - and you'll likely find a great one too. So why redo it in a way that will suffer anyway?
Second, this book gives you useful information, and only useful information. No space is wasted. Every chapter is concise, to the point, and specific. I've never read a book with such a high percentage of useful information. I'll gladly pay about the same price for a 200-page book with 190 useful pages instead of a 1000-page book with 90 useful pages. The presentation is clean, clear, and consistent.
Third, well, the topic is wireless Java, so I'll also tell you that I picked up this book knowing Java but not J2ME, and after reading it I know everything I need to know to writing Java programs using J2ME. I've looked at all the Java wireless books and I truly believe that this is the best one. You'll learn about how J2ME is partitioned, how MIDP fits into CLDC, what parts of J2SE are included and left out, how to write MIDlets and user interfaces, how to work with persistent storage (micro-databases), networking, performance optimization, XML, and security.
The author and his team (because a book does not come to exist by only one person) should be applauded for boldly going against the trend of selling books by weight.
One last note: this is the ONLY book for which I thought even the appendix was useful!
Enjoy it and enjoy trying out J2ME.
Excellent text for early adoptersReview Date: 2001-12-02
This book delivers exactly what it promises, in a straightforward, down-to-earth, no-nonsense style that's very refreshing in a Java text. It's attractively sized and priced, promises to be useful as a reference long after the first reading, and comprehensively touches on just about all of the major features of the 1.0 MIDP API.
Prospective buyers should be aware, however, that one
of the consequences of the aforementioned virtues is that this book is not intended to include or to be a tutorial in Java
itself. The presentation presumes that the reader is already comfortable with the Java language and Java technology platforms
in general.
In particular, experience with servlets will be required to get some of the network client examples running,
and while the author presents a review discussion of the rudiments of HTTP, detailed knowledge of the protocol spec will be
rewarded by the ability to make short shrift of the bug that provoked me to a previous negative review of this book (thanks,
Jonathan, for sorting out the problem for me).
In addition to thorough coverage of the API and a very good chapter on MIDP code optimization, this book includes what I would characterize as bonus chapters on MIDP-compatible XML parsers and the Legion of the Bouncy Castle's J2ME crypto library. It's not entirely clear to me why these particular topics were chosen (other than because the author has already written a book on Java crypto), but the book would be well worth the investment even without them.
Personally, though, I would have been happier had this space been used to provide some perspective on the relationship between MIDP and other complementary or competing wireless technologies, and how they will integrate to provide a superior experience for users of next-generation wireless devices. Maybe I would be asking for too much, too early in the game.
Anyway, this is a good book that I found very helpful. I hope there will be a second edition when the time comes, and I hope that Apress will post the Jargoneer bugfix so that future readers won't have the frustrating Saturday afternoon that I had trying to deal with it.
A book that is superiorReview Date: 2002-05-02
Excellent intro to a new technologyReview Date: 2001-12-05
Great place to learn about wireless JavaReview Date: 2001-07-26
This book is not for Java newbies. Knudsen assumes you're already pretty familiar with the core Java classes from J2SE and highlights only the differences that are found in J2ME.
You'll get more out of the book if you take the time to read his sample code and understand how it works. It won't take long (a half hour per sample), and it's well worth the effort.

Used price: $11.22

Great valueReview Date: 2008-06-06
Very well done!Review Date: 2008-06-14
I highly recommend this book for any .NET developer, not just those who use Visual Basic.
Great book for putting your team on agile trackReview Date: 2008-05-31
This book gives you in-dept view of refactoring with a lot of practical, code examples. This means that you are well prepared to answer any uncomfortable question. It builds up gradually, so it is easy to follow.
Almost every chapter ends up applying the stuff that was just exposed on a sample application with a lot of code. Surely author spent a decent time on this title. You can download the code and see it progress from chapter to chapter. This gives a great insight since you can read and debug the code at the same time and not just some toy or isolated example.
Here is chapter to chapter break-down of the book.
Chapter 1
Intro chapter, defines refactorings end code smells and explains the kind of baggage VB carries because of its origins. Cool section on misinterpretations, this will prepare you for some tough questions that might come from uninitiated developers or managers.
Explains the importance of writing simple, comprehensible code. For example:
Dim oXMLDom as New DOMDocumet() vs Dim portfolio as new DOMDOcument.
The first statement gives you no idea of what first DOMDocument represents, in second it's the portfolio, and if you know the application context you will know what to expect.
Chapter 2
Teaser chapter but also good single-chapter sample of some typical refactoring work. Captures well typical process of development of VB applications. Starts out with few event-handling methods, ends up with number of domain classes and some inheritance thrown in.
Chapter 3
Chapter on refactoring tools, also gives you some insight of how different tools like refactoring add-ins and unit testing framework fit the big picture of agile development process.
Chapter 4
Intro chapter on application that is used to illustrate refactorings throughout the book. Explains the business case, requirements, lists some use cases. It is important to understand the context of the application to be able to follow-up on refactorings. Also some funny stuff here, like freshman developer that takes pride in copy-paste development.
Chapter 5
In-dept discussion on Static vs. Dynamic and Strong vs. Weak Typing that is rarely dealt with in such depth. This is basically controlled with Option Strict and Option Explicit options. If you program in VB, you must be aware how these work out.
Chapter 6
Chapter on error handling, especially legacy vs. structured error handling. Again, something everyone should know, but rarely explained in such depth. Cool stuff is step by step recipe for converting legacy to structured.
Chapter 7
Deals with some core refactorings like Dead Code Elimination, Scope Reduction etc. It's like cleaning up your code for some serious refactoring stuff.
Chapter 8
First step in structuring your code is getting serious about the problem (or business) domain. Also explains Rename and Safe Rename refactoring, talks about Interface vs. Abstract class, Open-Closed principle etc. some serious OO stuff.
Chapter 9
Some core refactoring stuff. Teaches you how to eliminate duplicated code and why it is the worst thing it can happen to your code. Explains Extract Method and Replace Magic Literal with Symbolic Constant variable. Nice and simple example based on circle geometric shape on how procedural design is transformed to Object Oriented design (Module and Shared method rings a bell?)
Chapter 10
If only method extraction would be as simple in real life... This chapter goes further with method extraction and deals with some common problems like temps.
Chapter 11
Where do objects come from? How you design classes? Some core OO stuff in this chapter, including Extract Class, Move Member (Method or Field) refactorings, smells like Database Driven Design or Data Class, Large Class, OO principles like Single Reasonability Principle etc. Lot of stuff and handful of pages in this chapter.
Chapter 12
Build upon previous chapter. Deals with inheritance, polymorphism, genericity. Explains the difference between class and interface (or implementation vs. interface inheritance), difference between delegation and inheritance and criteria to chose one or another, list some common misuses of inheritance etc. Again, a number of refactorings like Replace Inheritance With Delegation or Extract Interface, Extract Super etc. Some heavyweight OO concepts in this chapter, takes a time to digest.
Chapter 13
Explains what is important when taking a birds-view of software. This chapter is especially important for software architects. Talks a lot about dependencies in software and why you should minimize dependencies in your code.
Chapter 14
Single chapter for huge subject, still a lot of material covered. Design patterns are the most advanced subject in OO, so refactoring your code in order to make use of patterns is in no way child's play. Mostly deals with creational patterns. First mention of Dependency Injection in some VB book I come across. Now taking into account that Unity application block [...] has been released in April, this is really cutting edge stuff!
Chapter 15
Talks about latest VB improvements that come with VB 2008. Starts with XML enhancements like XML literals and then the rest is about LINQ. Explains a LINQ implementation called LINQ-to-SQL. This is first Microsoft Object-Relational Mapper (ORM). Again, cutting edge.
Chapter 16
If you still deal with VB6 code, than you know that migrating to .Net is no easy ride. This chapter explains some techniques that will help you migrate your code and make it .Net in sprit, not leaving it crippled by simple migration that will only make it execute in .Net. VB6 lacks inheritance, generics etc, so you need refactorings to make it VB .Net.
This book has no real competition as far as I know, no book on refactoring or agile for VB .Net developers. The one that come close is Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series) but it is for C# developers and requires a lot higher starting point.
When other books come up, I am sure Professional Refactoring in VB will continue to hold its ground. Highly recommended!
Great Book on RefactoringReview Date: 2008-05-05
Martin Fowler finally has a fair partner on my shelf ;).
Must read for any serious VB developer.Review Date: 2008-05-03
This book is deep and takes a while to digest. However, it's not about showing off some irrelevant academic knowledge. Author is not afraid to mention "Dependency Injection" or "Single Responsibility Principle" but all of these are demonstrated to be relevant and get illustrated through very practical and real-life examples.
Used price: $80.00

Don't hesitate to buy this one: you won't be sorry!!Review Date: 1999-02-18
My best compiler bookReview Date: 2006-11-03
Just FantasticReview Date: 1998-04-14
Excellent! Very practical and usefulReview Date: 1999-07-23

Used price: $64.39

Essential ResourceReview Date: 2005-03-05
It's a fabulous read, engagingly styled, with generous research and practical perspective, authoritative with Fisher being responsible for this paradigm of simultaneously engineering the compiler and processor.
Practicing engineers -- both chip architects and embedded system designers -- will find the techniques they will need to use and develop VLIW-based systems. Instructors will value the rare juxtaposition of advanced technology with practical deployment examples, and students will enjoy the unusually engaging and mind-expanding chapter exercises.
Good for the right readerReview Date: 2006-12-05
The book's most distinctive feature, however, is its emphasis on Very Long Instruction Word (VLIW) processors. These come in many flavors. One classic structure comes from TI's DSPs with 8 ALUs controlled in every cycle; standard superscalar and Intel's EPIC are also noted, for contrast and variety. The book is thick (over 600pp) and dense, so no summary can do it justice and still fit here.
The book's personal note is part of its charm. The authors aren't afraid to take on widespread opinoins in their "Flame" sidebars. One in particular struck home for me: the polite diatribe against "smart" assemblers that hide the machine from the people who really need to see it. Amen, brother! My worst experience of that sort was in the 90s-era TI C5x family. It had delayed branches, with two words in the delay slot. You could put either two one-word instructions or one two-word instruction into that slot. After annoyance that you can imagine, I discovered that the compiler was putting a one-word instruction in the branch shadow followed by a two-word instruction. It was executing one and a half instructions in the branch delay, with un-helpful effect. That second instruction was the one the assembler was "helping" with. If the immediate operand had been smaller, it would have been a one-word instruction and would have been fine. The immediate value was too big, though, so the assembler converted that same opcode into a different two-word machine instruction with a larger immediate field - kaboom!
It's a good survey and a good introduction for people who want a wider view of what computing is about. Given the rise of reconfigurable computing, it's also helpful in putting readers in the frame of mind needed for defining their own computers as a matter of course. The breadth of coverage means that, despite the book's mass, its coverage of some topics lacks depth. I can't really fault the authors, though, since there's so much to say and since different readers have such different needs. The depth is there, but it's in the exercises and copious references so readers have to dig into it on their own. This isn't a book for every reader, but it's a helpful compendium for people with many kinds of needs a bit away from what computer science usually offers.
//wiredweird
Well written, ComprehensiveReview Date: 2005-04-04
The foreword to this bookReview Date: 2005-03-04
Our tradition in computer engineering has been to seldom leave our neighborhood. If you want to learn about operating systems, you read an OS book; for multiprocessor systems, you get a book that maps out the MP space.
The book you are holding in your hands can serve admirably in that direct sense. If the technology you are working on is associated with VLIWs or "embedded computing", then clearly it is imperative that you read this book.
But what pleasantly surprised me was how useful this book is, even if one's work is not VLIW-related or has no obvious relationship to embedded computing. I had long felt it was time for Josh Fisher to write his magnum opus on VLIWs, so when I first heard he and his co-authors were working on a book with VLIw in the title, I naturally and enthusiastically assumed this was it. Then I heard the words "embedded computing" were also in the title, and felt considerable uncertainty, having spent most of my professional career in the general-purpose computing arena. I thought embedded computing was interesting, but mostly in the same sense that studying cosmology was interesting: intellectually challenging, but what does it have to do with me?
I should have known better. I don't think Josh Fisher can write boring text. He doesn't know how. (I still consider his "Very Long Instruction Word Architectures and the ELI-512" paper from ISCA-10 to be the finest conference publication I have ever read.) And he seems to have either found like-minded co-authors in Faraboschi and Young, or he taught them well, because Embedded Computing: A VLIW Approach is enthralling in its clarity and exhilarating in its scope. If you are involved in computer system design or programming, you must still read this book, because it will take you to places where the views are spectacular, including those looking over to where you usually live. You don't necessarily have to agree with every point the authors make, but you WILL understand what they are trying to say, and they WILL make you think.
One of the best legacies of the classic Hennessy and Patterson computer architecture textbooks is that the success of their format and style has encouraged more books like theirs. In Embedded Computing: A VLIW Approach, you will find the Pitfalls, Controversies, and occasional Opinion sidebars that made H&P such a joy to read. This kind of technical exposition is like vulcanology done while standing on an active volcano. Look over there, and see molten lava running under a new fissure in the rocks. Feel the heat; it commands your full attention. It's immersive, it's interesting, and it's immediate. If your Vibram soles start melting, it's still worth it. You probably needed new shoes anyway.
I first met Josh when I was a grad student at Carnegie-Mellon in 1982. He spent an hour earnestly describing to me how a sufficiently talented compiler could, in principle, find enough parallelism via a technique he called Trace Scheduling, to keep a really wild looking hardware engine busy. The compiler would speculatively move code all over the place, and then invent more code to fix up what it got wrong. I thought to myself "so THIS is what a lunatic looks like up close. I hope he's not dangerous." Two years later I joined him at Multiflow and learned more in the next five years than I ever have, before or since.
It was an honor to review an early draft of this book, and I was thrilled to be asked to contribute this foreword. As the book makes clear, general-purpose computing has traditionally gotten the glory, while embedded computing quietly keeps our infrastructure running. This is probably just a sign of the immaturity of the general-purpose computing environment (even though we non-embedded types don't like to admit that). With general-purpose computers, people "use the computer" to do something. But with embedded computers, people accomplish some task, blithely and happily unaware that there's a computer involved. Indeed, if they had to be conscious of the computer, their embedded computers would have already failed: antilock brakes and engine controllers, for instance. General-purpose CPUs have a few microarchitecture performance tricks to show their embedded brethren, but the embedded space has much more to teach the general computing folks about the bigger picture: total cost of ownership, who lives in the adjacent neighborhoods, and what they need for all to live harmoniously. This book is a wonderful contribution towards that evolution.

Used price: $72.97

Finally, everything in one place.Review Date: 2003-02-05
An excellent book on loop based optimizationReview Date: 2003-04-14
to compiler design theory. This book is a clearly written
discussion of the issues involving loop optimization and
dependence analysis. While this book also covers scalar
optimization issues, it is naturally complemented by Steven
S. Muchnick's excellent book "Advanced Compiler Design and
Implementation".
Randy
Allen has spent many years implementing a variety of
compilers for supercomputers and hardware design languages.
While
Ken Kennedy has published seminal theoretical work on
compiler optimization, he has also been involved in hands on
implementation
as well. The experience of these two authors
results in a book which covers the huge body of knowledge in
compiler
optimization and provides this knowledge in a
practical form that can be used by software engineers working
on compiler
design.
For anyone working on modern compilers that require sophisticated
optimization features, this is an important
reference work.
As with Muchnick's book, I have owned this since it was first
published. Rereading it reminds me of
what a gem this work is.
Must-have for compiler writers and processor designersReview Date: 2007-01-14
It centers heavily on Fortran - even today, a mainstay of scientific computing and an active area of language development. Today, just as 50 years ago, the language's straightforward structure makes detailed behavioral analysis relatively easy. That's especially true in handling the array computations that soak up so many dozens (as of this writing) of CPU-hours per second on todays largest machines. There's far too much to summarize here, but A&K cover a huge range of processor features, including caches, multiple ALUs, vector units, chaining, and more. C code gets some attention as well, much needed because of the cultural weirdness around array handling in C. In every case, the focus is on the real-world kernels that need the help and on explicit ways of identifying and manipulating those code structures. As a result, the authors disregard the unreal situations that sometimes arise, e.g. in
"while (--n) *a++ = *b++ * *c++;"
Yes, the arrays pointed to by a, b, and c can overlap. But the pointer a can also point to a, b, c, or n, somewhere in its range - and likewise for pointers b and c, or all three. There is essentially no limit to how bad this can get, e.g when n is an alias for a, b, or c. Yes these are rare situations and generally errors - but I've seen on-the-fly code generation in production environments, so even the A&K example isn't as bad as it gets. I admit these to be pathological cases, though, better suited to an 'Obfuscated C' contest than to a compiler textbook.
The real disappointment comes from the section on compilation for Verilog and VHDL, and that disappointment may be a matter of emphasis only. The authors focus heavily on the strangeness of four-valued bits, which exist in Verilog and VHDL simulation, but not in synthesis. I.e., not in what really matters to a deployed application. The real challenge lies in compilation of C or Fortran into gates, a topic that the authors barely skim. That, however, is still a field of research exotica. It should be mentioned in a general book on compilation, as it is here, but awaits a text of its own.
All you processor designers out there should read the title a little differently. You should read this as "Modern Architectures for Optimizing Compilers," but you probably worked that out for yourself. If you have the luxury to define your own memory structure, all that analysis of memory access will give you plenty of ideas for your next ASIP. It will certainly give you lots of ways to quantify the behavior of your target applications, so you'll know just how to get the most MIPS per Mgate, including hard limits on how much hardware paralellism can actually do you any good.
All architects of performance computing systems, hardware or software, need this book. Even application developers can learn better ways to cooperate with the compilers and tools that run their codes. It has my very highest recommendation.
//wiredweird
Very readable, very specificReview Date: 2005-08-11
Related Subjects: Compiler Construction Kits
More Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
While it's not as specific as some other books (language specific references, compiler construction texts, etc), it is a great beginning and reference for a wide range of topics. The bibliography of this book is incredible. I have marked a large number of papers/books from the bib that I now want to read in full.
The bonus information on the CD is also very good, including all the source code from the book, extra sections, and links to other resources.