Full description not available
R**N
Great Introductory Book on IA-32 Assembly!
This is a very good introductory book on IA-32 Assembly programming on Linux (well, Ubuntu distro specifically but adaptable to other distros too). Uses NASM and a stack of tools that are likely available for all distros (but again definitely if you have an Ubuntu variant).If you're really ready to take your time and are shooting for a well-grounded point of departure than this book is for you. If you've already mastered things like IA-32 architecture, number theory, adding in hex, fundamentals of assembly, registers, eflags, etc., than this might move too slow for you. That being said, you may just find some interesting nuggets in this book.One thing I really liked about this book is he moves at a very realistic gradient for the beginning assembly newbie and also provides a very nice setup for experimentation (that is, he suggests a certain toolset which, once setup, will allow you to step through your program and inspect the registers instruction by instruction). I found this quite helpful in making abstract concepts more concrete and to confirm my understanding. Also, very nice use of diagrams not usually found in a topic as terse as assembly language!Some have complained on earlier editions that they don't like his writing style and that he takes too long to get you to the meat of assembly. I wasn't too crazy about the Martians FooBitidy whatever analogy that he uses, and he definitely can take a bit long to get to the point from time to time. However, this can come in useful for complicated sections as he really takes his time to lay it all out in such a way to where you'd have to be asleep not to "get it". As a programmer who has learned to do a lot of reading on the side, I don't much care if 100 pages could have been stripped down - I'm more concerned with whether I can actually learn from a book. If you require K&R style writing you my not like this. However, my suggestion - deal with a bit of annoying fluff and you'll be thankful in the end. I just don't see another resource that gets you this kind of grounding IMO.You definitely should be ready to take your time with this one. For example, he will ask you to put down the book and learn to add up to 0Fh + 0Fx, and expects you to commit this to memory. I made flash cards and put the book down for a few days until I had that down pat (this only happens once in the book though) - so yes, there's some commitment involved on the reader's part. But it won't dump you on the side of the road half way in so you'll be happy you made the effort. Note that he many times will present a code example with a few new concepts and THEN explain those concepts shortly thereafter. He seems to like to show some things in context and this requires some forward references - nothing that leaves you too miffed though.Overall, wish I had this book earlier in my career! Well down My Duntemann!
G**S
Excellent book--new problems noted
This book by one of the true gurus of computer programming is long overdue, but well worth the wait. I'm using it to refresh my dormant assembly language skills. I highly recommend this book for both beginners and rusty old-timers like me.Please note that Jeff's book teaches assembly language programming for the IA-32 (Intel/AMD) CPUs on a Linux Ubuntu platform, NOT Windows. He uses development tools that are free in the Linux world, specifically: the KDE desktop, the Kate programming editor, the Nasm assembler, the Linux built-in linker, and the Insight debugger. Users of other Linux kernels should have little trouble following his instructions on their systems. In particular, everything works under the Gnome desktop.Unlike many other books on assembly language, Jeff doesn't start by plunging the reader into a discussion of arcane assembly opcodes. He first draws on his decades-long experience to give a thorough introduction to the history and evolution of the architecture of the Intel family of processors, as well as a good presentation of number bases. Almost the first third of the book is devoted to such valuable prefatory background. Having taught assembly language courses at the college level, I truly commend this approach.WARNING: There are two main problems to be aware of. Jeff developed the book using a 32-bit machine and version 8.10 of Linux Ubuntu. To save space in what should properly be a review, I have posted the fixes on a website I created specifically to address these problems. See my comment to this review for directions to that resource. Meanwhile, here's brief descriptions of the problems:First problem: If you have a 64-bit CPU and Linux kernel, you will encounter a minor problem assembling your source code if you enter the command lines he uses for Nasm (see pg. 144 of the book), which targeted a 32-bit CPU.Second problem: Unfortunately, with the release of Ubuntu 10.4, Jeff was blind-sided by a change in that release: the Insight debugger, which is used throughout his book, was dropped from the Ubuntu 10.4 distribution. It is also no longer listed in any of the standard repositories known to Ubuntu 10.4. However, I've posted a method for installing Insight in Ubuntu 10.4 on the website I mentioned above. Of course, you can also use the Kdbg debugger, although it doesn't have some of the features of Insight that Jeff likes. He presents an introduction to Kdbg in the early parts of the book.These problems should be non-existent if you are using an earlier release of Ubuntu and a 32-bit machine, and the Insight problem has only appeared as of the Ubuntu 10.4 release. Since fixes are now available, these problems are no reason to avoid purchasing this excellent book on assembly language programming.
T**Y
but it feels like he goes a little too over the top in ...
Duntemann likes to give us all the background needed before we get into coding assembly. It's helpful, but it feels like he goes a little too over the top in giving us the foundation right off the bat. It takes him until the very end of Chapter 5 to start actually teaching assembly.I will say that all of the foundation he gives in the first 5 chapters is interesting and necessary (although maybe not right off the bat). Reading this book after taking an assembly / computer organization class in college, I can say that this book provides nearly the same information, only more clearly, for a much cheaper price. His writing is easy to understand and follow along with, but sometimes he gets too far off on his metaphors (in the first few chapters) to the point where you're actually just focusing on trying to learn his metaphors rather than the real information he's trying to convey. One such example is his "Alien Bases" Chapter 2, where he is trying to compare base number systems to martian counting with unintelligible symbols and less fingers on their hands than us. It's a good metaphor, but it's taken too far.I recommend this book to someone who is willing to learn assembly from the ground up, and wants to understand all of the inter-workings of the computer and how it processes the assembly that you will be writing. However, if you want to learn the assembly instructions themselves, I would recommend that you get at least one more supplemental book on Assembly Language, that is more specific to that purpose, to read after the completion of this book. This book is not the quick and easy way to learn assembly, but it IS the right way to start out.
Trustpilot
1 month ago
4 days ago