- Format: Kindle Edition
- File Size: 5124 KB
- Print Length: 576 pages
- Publisher: Wrox; 1 edition (13 August 2007)
- Sold by: Amazon Australia Services, Inc.
- Language: English
- ASIN: B000Q7ZETY
- Text-to-Speech: Enabled
- Word Wise: Not Enabled
- Customer Reviews: 19 customer ratings
- Amazon Bestsellers Rank: #819,707 Paid in Kindle Store (See Top 100 Paid in Kindle Store)
Professional Assembly Language Kindle Edition
|New from||Used from|
Kindle Monthly Deals
New deals each month starting at $1.49. Learn more
Customers also viewed these products
From the Back Cover
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
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.
Customers who bought this item also bought
|5 star 51% (51%)||51%|
|4 star 14% (14%)||14%|
|3 star 25% (25%)||25%|
|2 star 10% (10%)||10%|
|1 star 0% (0%)||0%|
Review this product
Top international reviews
What it will NOT give you: sufficient understanding to code non-trivial assembler programs, or to optimize in anything but the most simplistic manner. It doesn't even contain a comprehensive listing of x86 instructions! This definitely cannot be your only reference book.
Still, I'm happy I bought this book. Despite it's limitations, it's readable, comprehensible, and immediately useful.
Man beachte, dass man dieses Buch nur als Einführung nutzen sollte, auch wenn es vom Autor gepriesen wird mit den üblichen "Schlag mich tot Begriffen" wie Guru und von der ersten Stunde an dabei...
Die Fünf gibt es eben, weil es meinem Wissen nach das erste Werk zum Assembler ist, dass nicht über 20 Jahre der Zeit hinterher hingt.
The flow is fairly natural with one chapter leading to the next while progressively increasing complexity.
The only downside is that there is very little information about 64 bits processors which, in fairness, were very rare at the time (but ubiquitous now).
My problem with this book is the ridiculous amount of errors in the code, most of which are not in the errata page on the web site (including the one that I submitted myself before realizing that the whole book was riddled with errors.) While going through the book, I spent hours trying to figure out why the programs weren't working until finally finding the errors in the code. The errors are replicated both in the book, and in the downloadable code.
So, this book would be elementary if I were an engineer writing code all day...but I am not. I find this book to be challenging...but for someone like me it works. My real objective is to be able to read and understand Assembly...not really to use it or write it. I think this book fits the bill...but it even may be more detailed than I need. To just about anyone else in my profession...it would be too hardcore to even begin to understand, but I've got a lot of the fundamentals down as I can read and understand code I encounter, and can even (ineffectively) write if my life depended on it.
I'm loving the book so far.
Secondly, the tables of instructions are scattered and incomplete. Some instructions are only mentioned in the paragraph text and often have incomplete listings of modifiers and which data they operate on. It is also impossible to find _anything_ in the index. Most of the instructions are completely missing from the index and so are other important things like assembler directives.
My projection: you will read this one time (or maybe twice) and then get a better reference book to sit on your shelf.
Let me start off with the title; this is NOT worthy of the "Professional" moniker of Wrox's series. I have read some books of Wrox which did deserve the moniker, and the content and the essentials were in the right places. This book in particular is somewhat of a "Beginning Assembly Language with Less Significant Information" moniker, to be more precise.
Here are a couple of examples from the book that I absolutely abhor:
A. Lack of explanation in the right places, but supposedly is explained elsewhere.
In page 77, in the "The Sample Program" section, the author has the reader's attention, in what will hopefully be some code with more than sufficient explanation. I was extremely disappointed when I read this right after the last line of code (my emphasis in CAPS included):
"This program uses quite a few different assembly language instructions. FOR NOW, DON'T WORRY TOO MUCH ABOUT WHAT THEY ARE; THAT WILL BE DESCRIBED IN DETAIL IN SUBSEQUENT CHAPTERS. FOR NOW, CONCENTRATE ON HOW THE INSTRUCTIONS ARE PLACED IN THE PROGRAM, THE FLOW OF HOW THEY OPERATE, AND HOW THE SOURCE CODE FILE IS CONVERTED INTO AN EXECUTABLE PROGRAM FILE."
I was flabbergasted. Why would the author put in so much non-essential code in a demo program when he will simply tell us to skip the "few different assembly language instructions"?
First of all, if the author wanted to demonstrate a simple program where he wants us to focus on "how the instructions are placed in the program, the flow of how they operate, and how the source code file is converted into an executable program file", then a classic "Hello, world" example where the text "Hello world" is printed on the terminal screen would have been more than sufficient for this program. I did not understand how the flow of how the program operated until I explicitly researched it on the internet. I did NOT learn the flow of the program from this book. This only led to more questions than answers, e.g.
"Why did he put that much numbers of the letter 'x' in the ascii variable"?,
"Why did he call the cpuid program like that? Isn't there a call keyword needed?",
"Where did that 42 value come from, and why is he moving it to the EDX register? Why not the ECX register or any other registers? Why did it have to be the EDX register? Why did he use 42 as the value? Did he just magically think of a random number and decided on 42 and put it in the register?"
Another example can be found in page 103. It is more of the same thing. Here's an excerpt after some sample code which supposedly demonstrates how to use indexed memory locations:
"Don't worry too much about the auxiliary code used in this example. All of these instructions are covered in later chapters. Concentrate on how the program manipulates the data array defined."
First of all, what, for the author, is considered 'auxiliary' code? If these are going to be covered in later chapters, please specify where so we can fold the page, look them up and go back to the topic. Like the previous example, this demo program leaves more questions than answers, e.g.
"What is 'nop'? What is its use? Why is it there?"
"What is 'cmpl'? Does it stand for 'complain'? Because that is exactly what I am doing."
"What is jne loop?"
B. No lack of explanation to more trivial contents
Turn to page 24 of the book and you will learn about the Retirement Unit and Execution Unit. Turn to the next page and you learn about Low-latency Integer Execution unit and Complex-integer execution unit. Flip through the pages and you can see definitions of flags and registers, but no explanation when, how or why use them; there isn't even a note on whether or not we are going to use them. Instead, the reader is given classic textbook "An elevator is something that elevates" definitions - a list of terms which are described, but nothing more. Definitions are OK, but when are we going to use all of these? If we're not going to use it in code or if it is not going to serve a purpose later on in the book (which should be stated if that were the case, by the way), why even bother bringing it up? It's like reading a book on the essentials of C and a whole chapter is dedicated to the history of the B programming language, an almost-extinct programming language which would be superseded by C, which is entirely beside the point of learning the essentials of C. The worst part of this is that it's not just one chapter dedicated to this - as you read along, you will find trivial information such as
Here are my suggestions to improve this book. First, remove "Professional" in the title. It is NOT professional. Go with "Beginning" because it suits it more. Another suggestion is to make do without the trivial information, and focus on explaining anything and everything essential in Assembly Language. When I learn a language, I want all explanations about a demo program's code within 2 pages, and the reasoning for choosing the values and registers. The third and my final suggestion is to comment on EVERY LINE OF CODE. I'm serious. This is assembly language, the world of mnemonics and concatenated words, not C or some other high level language, where keywords which can be easily understood by humans are used.
There are more questions than answers as you try to follow along the code of this book. If you want to learn Assembly Language, look for another book elsewhere.