Write Great Code: Understanding The Machine

June 6, 2006
By Randall Hyde
ISBN: 1593270038

This book is the first of a four-part series designed for programmers. This volume starts with the architectural basics, but includes plenty of C code examples to make it a worthwhile read for a new C developer. The book covers the typical range of topics from data representation to memory and interrupts.

The chapters tend to be specific enough to gain a general understanding of how things work, but it does not delve deep enough for someone that is going to be doing down and dirty embedded programming. This tends to show up in areas such as the discussion of instruction sets that I actually like. It defines an imaginary x86-compatible architecture that is essentially a subset of an actual x86 chip. It is not a bad approach because the full discussion of any of today's x86 chips, like the Athlon or Pentium 4, needs four volumes of its own. The chapter does take a look at the differences between a full x86 instruction set, but does not explore the details of each opcode. I would have also preferred to see more of a discussion of architectures such as the 8051, PIC, ARM, and Coldfire.

The only major problems I found were in the discussion of memory. Talking about garbage collection and not even mentioning Java seems a bit off. Likewise, the discussion of NUMA (non-uniform memory architecture) was very superficial and it could easily confuse a new programmer.

What I did like about this book is the plethora of options that are presented. For example, the character encoding section near the start of the book takes a look at the usual C zero terminated strings as well as more esoteric items like Delphi string encoding and Unicode support.

The book lays a good groundwork, although with a somewhat x86-centric view, that makes it worth having. It will be interesting to see how the the remaining three books address the actual job of programming now that the base has been cast.

About the Author

William G. Wong | Senior Content Director - Electronic Design and Microwaves & RF

I am Editor of Electronic Design focusing on embedded, software, and systems. As Senior Content Director, I also manage Microwaves & RF and I work with a great team of editors to provide engineers, programmers, developers and technical managers with interesting and useful articles and videos on a regular basis. Check out our free newsletters to see the latest content.

You can send press releases for new products for possible coverage on the website. I am also interested in receiving contributed articles for publishing on our website. Use our template and send to me along with a signed release form. 

Check out my blog, AltEmbedded on Electronic Design, as well as his latest articles on this site that are listed below. 

You can visit my social media via these links:

I earned a Bachelor of Electrical Engineering at the Georgia Institute of Technology and a Masters in Computer Science from Rutgers University. I still do a bit of programming using everything from C and C++ to Rust and Ada/SPARK. I do a bit of PHP programming for Drupal websites. I have posted a few Drupal modules.  

I still get a hand on software and electronic hardware. Some of this can be found on our Kit Close-Up video series. You can also see me on many of our TechXchange Talk videos. I am interested in a range of projects from robotics to artificial intelligence. 

Sponsored Recommendations

Comments

To join the conversation, and become an exclusive member of Electronic Design, create an account today!