The Art of Assembly Language, 2nd Ed Review
I haven't seriously programmed in assembler for nearly 20 years. The last time I did was for a set of routines on the Motorola 68000 chip powering my long gone Atari ST computer. The computing world has changed quite a bit since then and so have the number of programming options and frameworks. However, a lament made by a number of prominent CS educators is that abstracted frameworks lessen the understanding of what is really going on at the machine level. Does The Art of Assembly Language satisfy such educational deficiencies by effectively teaching lower-level practices to the uninitiated? Read on to find out.Author Randall Hyde is an ideal educator to write on this subject. He is the author of the excellent two volume (so far) Write Great Code books published by No Starch Press and co-author of the Microsoft Macro Assembler (MASM) book titled MASM 6.0 Bible and has also contributed articles to Dr Dobbs.
The author teaches an abstracted, custom version of assembly called High Level Assembly (HLA) and offers versions of HLA for Linux, Mac and Windows available for download from his website. In addition to the cross-platform HLA compilers, a full electronic edition of the first edition of the book is available for download as well. This begs the question of considering the hefty cover price of the print edition, especially in the era of Kindle and iPad editions. Even though the freely available HTML or PDF editions are adequate on the iPad, the print edition still excels at rapid spacial access to book passages and code samples. This will no doubt eventually favor electronic editions as more books migrate to these tablet-based digital reading platforms. But for now, a book of this size and this amount of information density is currently optimal in paper format and thus worth considering the cover price. Not to mention, its purchase rewards the author with monetary compensation for a job well done.
After reminding readers that what is presented in the book is not raw assembly language programming, Randall reaffirms that HLA is a learning platform for students to acclimate to the constructs behind the assembly language principles. As such, readers seeking to program the latest embedded systems in assembly will need further study beyond the book to attain that goal. If readers are seeking enlightenment in the rules, processes and general syntactic understanding of assembly, HLA is an excellent educational choice. Refreshingly, there isn't a chapter or even appendix on configuring the HLA development environment, since these steps require nothing more than downloading the HLA binary, using a text editor and compiling the code.
The book progresses from Hello, World in HLA describing basic statements and the HLA Standard Library to data representation, memory access, data types, procedures and arithmetic expressions. Roughly mid-way through, a chapter on low-level control structures followed by 70+ pages on advanced arithmetic operations are what I found to be the most mentally engaging chapters in the book. These are followed by chapters on the HLA Compile-Time Language (CTL), bit manipulation and 80x86 string instructions. The book concludes with a useful chapter on leveraging classes and objects in HLA.
The Art of Assembly Language ramps up at an even keel and never once did I feel rushed or required to re-read a passage due to complexity or ambiguous discussions. The author does a great job of keeping the focus on educating the reader with easy-to-follow instructions and explanations. About the only thing I found lacking was a concluding chapter on where to go next based on the modern day computing landscape. How can I leverage these newfound assembly language skills in a multi-core scenario? What toolsets are available for ARM development, and how are they different from the 80x86 instructions learned from the book? Will assembly language see a resurgence as the drive toward miniaturization accelerates? Essentially, where do I go from here?
Overall, The Art of Assembly Language is a welcome addition to the bookshelf of any programmer who has yet to experience and appreciate deeper understanding of HLA gained as a result of reading the book. For developers already familiar with assembly language, the book offers a solid reintroduction to the art and a strong reminder why learning assembly language skills are still relevant in today's third generation language-favored world.
Title: The Art of Assembly Language, 2nd Edition Publisher: No Starch Press Author: Randall Hyde ISBN: 978-1-59327-207-4 Pages: 760 Cost: $59.95 US