- Amazon Student members save an additional 10% on Textbooks with promo code TEXTBOOK10. Enter code TEXTBOOK10 at checkout. Here's how (restrictions apply)
Professional Assembly Language Paperback – Feb 11 2005
|New from||Used from|
Special Offers and Product Promotions
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your e-mail address or mobile phone number.
From the Back Cover
Professional Assembly Language
Every high level language program (such as C and C++) is converted by a compiler into assembly language before it is linked into an executable program. This book shows you how to view the assembly language code generated by the compiler and understand how it is created. With that knowledge you can tweak the assembly language code generated by the compiler or create your own assembly language routines.
This code-intensive guide is divided into three sections basics of the assembly language program development environment, assembly language programming, and advanced assembly language techniques. It shows how to decipher the compiler-generated assembly language code, and how to make functions in your programs faster and more efficient to increase the performance of an application.
What you will learn from this book:
- The benefits of examining the assembly language code generated from your high-level language program
- How to create stand-alone assembly language programs for the Linux Pentium environment
- Ways to incorporate advanced functions and libraries in assembly language programs
- How to incorporate assembly language routines in your C and C++ applications
- Ways to use Linux system calls in your assembly language programs
- How to utilize Pentium MMX and SSE functions in your applications
About the Author
Richard Blum has worked for a large U.S. government organization for more than 15 years. During that time, he has had the opportunity to program utilities in various programming languages: C, C++, Java, and Microsoft VB.NET and C#. With this experience, Rich has often found the benefit of reviewing assembly language code generated by compilers and utilizing assembly language routines to speed up higher-level language programs.
Rich has a bachelor of science degree in electrical engineering from Purdue University, where he worked on many assembly language projects. (Of course, this was back in the eight-bit processor days.) He also has a master of science degree in management from Purdue University, specializing in Management Information Systems.
Inside This Book(Learn More)
Top Customer Reviews
The book is valuable to those who need to learn assembly (but otherwise haven't really seen it before), and would be helpful for C programmers to understand how the language gets translated to assembly language.
It's a shame that for a book published in 2005, it didn't cover much of the newer AMD64 assembly, and there are a few fairly glaring erratas. It remains a bit of a blemish for an otherwise excellent book on a difficult topic.
Also, the chapter on MMX and SSE instructions feels a bit rushed, as some of the operations may seem a bit non-obvious. e.g. psadbw - Packed Sum of Absolute Difference will take the absolute difference of packed 8-bit integers in the source and destination operands, and sum the lower 8 abs-difference, sum them up, and put it as a low order 64-bit integer, and do the same thing to the higher 8 abs-difference.Read more ›
Most Helpful Customer Reviews on Amazon.com (beta)
Now to the book contents. As there is no previous knowledge of assembly assumed, the reader is first given a quite detailed view of the Intel processors architecture, including coverage of modern features like the Netburst design, present in modern Pentium series processors.Then basics of the tools of the trade are presented.
With this preliminary knowledge the reader is prepared to begin the major part of the book - the assembly language itself.
The learning curve is flattened as much as possible by the author, guiding us through all the major domains of assembly programming - working with processor registers, stack and heap manipulation, floating point arithmetic,handling various data types (strings, integers, floating point numbers) and more.
All the chapters contain stand alone code examples ready to be compiled and run. Most of the example code is 30-40 lines long and relates to the particular point being explained, i.e. there's no intentional cross-reference between code samples in different chapters.
Starting at the chapter 12, "Linux System Calls", begins what this book was written for - how to apply gathered so far knowledge to the real world. This includes: inline assembly in C/C++ code, programs combining C/C++ source code
and assembly functions, writing static/dynamic libraries in assembly that can be used by any high-level language (here C/C++), optimization tips and tricks, how to work with files.
Finally, the last chapter deals with advanced features like MMX, SSE, and SSE2 instructions .
So, to conclude - It has all a
programmer never exposed to assembly needs to learn to start writing fully functional stand alone or integrated into high-level language assembly code . The author covers all fundamentals of assembly programming and he does it in a plain and accessible language.
However there's something you should be aware of - if you're (like me) a fan of the Wrox "Professional.." series,- don't misunderstand the word in this context. It is only an introductory text on assembly,and it will not bring you to the level of professional assembly programmer, yet.
Having said that, within the Intel world, this book is an excellent introduction on how the IA-32 architecture has developed over time. It is a good introduction to the basic concepts of assembly language programming. It's a fairly high level book, aimed at the programmer who works in C++ or something like that who might want to optimize his code or at least understand what the compiler did to him.
To go with the book, you probably want to go to the Intel web site and download the Software Developer Manuals for the processor you are using (it's about 12 meg for the Pentium 4) or you can order them on a CD. But start with this book, it provides a basis, a foundation that will make the Intel manuals a lot easier to get around.
Good book to start out with assemblers.
Finally, it appears that my long search is over. This book is an excellent "how-to" for experienced programmers who want to enhance their applications with inline Assembly, for occasional coders who need access to specific machine instructions (why, I have no idea, but I'm sure you're out there somewhere), and for security analysts who need some assistance understanding shellcode. However, I think this book will be of enormous benefit for newcomers to programming and Assembly, as it shows in great detail how to develop and debug Assembly programs using the GNU gcc tools. It's one thing to learn instructions and algorithms; it's another entirely to go from an empty source file to a debugged and linked executable.
Don't be discouraged if you're strictly Microsoft; there are plenty of easy-to-use Linux distributions readily available for your pleasure. You can even remain true to Redmond by using a live CD distribution, such as Knoppix, to practise on, without ever having to install one of these nasty open source operating systems. Linux/BSD afficionados, of course, should feel right at home here.
The book explores a comprehensive introduction to assembly on Linux. Another reviewer objected to the word "Professional" in the title. Admittedly, this book is not an advanced guide, being aimed instead at those just getting into assembly. But the book is not for novice programmers, per se. The tutorial begins with a pretty quick overview of assembly language and its place in the programming milieu, then gives some information on the IA-32 platform and architecture. After that, you get an introduction to the tools you'll be using in the book, and then you're programming. It's fast, but not too fast and from that it's pretty obvious that the "Professional" is referring not to techniques or subject matter, but to the target audience -- professionals or relatively experienced programmers getting into practical assembly for the first time.
For me, I've found the book to be absolutely perfect: competently written, exploring the toolset I find most interesting, and promoting free software and Linux. Moreover, the knowledge I'm gleaning will be practically useful, I believe, an any OS running on the IA-32 platform. Windows uses different tools, and the opcode syntax is different, but it's not night and day -- more like late morning/early afternoon. The processor concepts and knowledge transfer cleanly.
If you're not running Linux or have access to a Unix-like system (Cygwin on Windows would probably do fine) then this book isn't for you. Also, if processor concepts are absolutely novel to you -- e.g., you think a register is something used to make change at a checkout line -- or you're still learning about for-loops or think HTML pages are "programs", then this book won't make you happy.
But if you want to delve into assembly quickly and you like working with Linux or Unix, this is your ticket. Highly recommended.