This is the second book in the “Write Great Code” series that started with an overview of hardware. This volume narrows the focus to the x86 and PowerPC platforms to provide contrast to various hardware and software architectural approaches.
The premise behind the series, espoused in this book’s title, is brought to fruition in this volume. It starts by examining the hardware platforms and assembler code but in the context of how a high level language like C or C++ will utilize the hardware. The assembler code samples show what a typical compiler will generate for the corresponding C code. Randall highlights the reason and costs so you can learn what kind of high level programming approaches are good and what might not be.
Of course, the downside is that all compilers are not equal and optimizations can radically change the efficiency of an application. Still, understanding the costs and efficiencies of both the hardware and emitted object code are very valuable to embedded developers. It is less but still important for programmers that will be targeting PC and server environments.
The book provides an excellent overview of the topics it cover including data types, expressions and control structures. This makes up the bulk of the book and the approach is consist: look at the low level implementation and then show the C or C++ counterpart. The discussion of various optimizations is good and it will be very useful for anyone who has not concentrated on compiler optimizations in the past.
It will be interesting to see how this series develops. At this point, you will have a good concept of the underlying system and how you and a compiler will take advantage of the system’s architecture. Yet to be addressed are more global considerations such as cross module support and multitasking. Still, this offering continues to fill out the series and provides easy, informative reading.