Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.

  • Apple
  • Android
  • Windows Phone
  • Android

To get the free app, enter your mobile phone number.

Linux Assembly Language Programming

3.1 out of 5 stars 15 customer reviews
ISBN-13: 978-0130879400
ISBN-10: 0130879401
Why is ISBN important?
ISBN
This bar-code number lets you verify that you're getting exactly the right version or edition of a book. The 13-digit and 10-digit formats both work.
Scan an ISBN with your phone
Use the Amazon App to scan ISBNs and compare prices.
Have one to sell? Sell on Amazon
Buy used On clicking this link, a new layer will be open
$25.00 On clicking this link, a new layer will be open
Buy new On clicking this link, a new layer will be open
$41.64 On clicking this link, a new layer will be open
More Buying Choices
12 New from $25.52 21 Used from $3.05
Free Two-Day Shipping for College Students with Prime Student Free%20Two-Day%20Shipping%20for%20College%20Students%20with%20Amazon%20Student


Excel2016ForDummiesVideo
Excel 2016 For Dummies Video Training
Discover what Excel can do for you with self-paced video lessons from For Dummies. Learn more.
$41.64 FREE Shipping. Only 1 left in stock (more on the way). Ships from and sold by Amazon.com. Gift-wrap available.
click to open popover

Editorial Reviews

From the Inside Flap

Preface

Assembly language is language which gives the programmer direct control over the computer. That is what appeals to people about assembly language. It is like using a stick shift. Programming with other languages, high-level languages, is like using an automatic.

Many people who use computers simply run programs. To them a program is a canned software package. People who like to write programs like to be able to shape the behavior of the machine the way metalsmiths shape metal into useful mechanical tools. Amongst all the programs on a computer, there is one program which runs the machine: the operating system. It controls everything. It offers "services" to the other programs. Most operating systems force programmers to leave their programming skills behind as they approach the operating system and to use it as they would a canned software package. That is because its source code is a secret. Linux portends the end of secret code in computing. Because the Linux source code and a compiler for it are right there on the computer along with the other source code, it allows programmers to work with the operating system as they do with programs they have written.

Operating systems were once written by programmers employed by computer manufacturers. Revolutions in hardware produced corresponding revolutions in the software. When Linus Torvalds rewrote Linux so that it would run on the Alpha architecture, his goal was not to increase its hardware base from one platform to two, but to make Linux platform-independent. The subsequent ports of Linux, to everything from a Sparc to a PowerPC, demonstrate the success of his rewrite.

The chief value of it is that it provides us with confidence that Linux is here to stay. We don't have to fear a PowerPC revolution coming along and forcing us to dump all of our old software.

Assembly code, on the other hand, is intrinsically platform-dependent and is justifiably regarded with caution for just this reason. It will have to be redone when the next hardware revolution takes place. Furthermore, people who compare the machine language of the 386 with other machine languages, both real and ideal, inevitably end up regarding the 386 language as a historical accident. On the other hand, the genetic code is sometimes referred to as a frozen accident. The term is based on the idea that the genetic code ceased its evolution when the number of proteins whose code would be "broken" by a mutation in the genetic code became so large that such mutations became lethal, and so the code became fixed. It remains to be seen whether 386 machine code has been "frozen" into place by the size of its software base. The threat of a PowerPC revolution has passed. On the other hand, many Linux enthusiasts anticipate an Alpha revolution.

But the Alpha revolution has not happened and it may not happen. The 386 language has been around for a long time. With many RISC machines now emulating the 386 architecture, isn't it time to consider programming in 386 assembly language? Assembly language is more work but it has its advantages. A very nice feature of assembly language code, which it shares with Linux itself incidentally, is that from a crass performance standpoint, it functions beautifully. Relying on compilers to produce good code is usually justifiable as a time saving measure.

But to get the best possible code, there is still no better option than to use assembly language. When high-level languages were still a novelty and referred to as automatic programming, many programmers were greatly offended by them. They were convinced that no compiler program could write code as well as they could. They were right of course. Compilers produce cheaper code but not better code. To get the full measure of speed and grace that a machine is capable of, there is no substitute for assembly language.

Furthermore, even if the Alpha revolution arrives on schedule tomorrow, there will remain in the world millions of processors running a 386 language that work beautifully and need to be put to a socially responsible use.

Computers can be programmed to report on our buying habits or to send off nuclear missiles. But they can also be programmed to communicate with privacy or to support medical research. As siliconsmiths, our job is to shape the behavior of the machine towards a human agenda.

This book assumes that the reader has some knowledge of C, but it makes no other assumptions.

Starred sections of the book are not needed subsequently and may be skipped when they are not of intrinsic interest.

Many errors undoubtedly remain. To those readers who notify me of them at neveln@cs.widener I shall be grateful.

From the Back Cover

  • Master x86 assembly language from a Linux perspective!
  • Essential information for creating Linux device drivers
  • How Linux works "under the hood!"

The first Linux-centered guide to x86 assembly language!

In Linux Assembly Language Programming, Bob Neveln explains all the key features of x86 assembly language in the context of the Linux operating system and the C language. The book's step-by-step, one-concept-at-a-time coverage will help any hardware programmer move to Linux, and master essential skills for Linux device driver development. You won't just learn new x86 assembly language skills: you'll also gain powerful "under the hood" insight into how Linux works.

Linux x86 assembly language programming, from start to finish!

  • Place-holding numeration
  • Logic circuits
  • Computation
  • The four-field format
  • Machine language
  • Memory
  • The stack
  • Linux user programs
  • NASM
  • DOS programs
  • Interrupts
  • Bit manipulations
  • Device drivers
  • And more...

NO_CONTENT_IN_FEATURE

The latest book club pick from Oprah
"The Underground Railroad" by Colson Whitehead is a magnificent novel chronicling a young slave's adventures as she makes a desperate bid for freedom in the antebellum South. See more

Product Details

  • Paperback: 272 pages
  • Publisher: Prentice Hall (July 30, 2000)
  • Language: English
  • ISBN-10: 0130879401
  • ISBN-13: 978-0130879400
  • Product Dimensions: 7 x 0.7 x 9.1 inches
  • Shipping Weight: 1.2 pounds (View shipping rates and policies)
  • Average Customer Review: 3.1 out of 5 stars  See all reviews (15 customer reviews)
  • Amazon Best Sellers Rank: #2,079,844 in Books (See Top 100 in Books)

Customer Reviews

Top Customer Reviews

Format: Paperback
I found this book to be almost completely worthless. Despite previous claims, neither the beginner nor the advanced programmer will have much use for this poorly written disappointment. The book's confusing organization and lack of coherency limits it's value to the beginning programmer while the advanced programmer will find nothing new. Intel's online IA32 manuals provide much better documentation at no cost. While those writing Linux device drivers may find the examples interesting, their money would be better spent on the Rubini book.
Comment 14 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Paperback
GAS (the Gnu Compiler Assembler) with the AT&T format is what I use, so all the examples felt really short with their NASM syntax. Sorry I didn't bother switching to a different tool, already familiar with the one I use. I suspect that Linux is here in the title to attract wannabe gurus, because the in-depth treatment of the kernel is really light. I recommend Linux kernel internals and the Intel (free) Pentium manuals for a better coverage. If you are novice, then this book may be a way to motivate you to go further in your device driver writer journey. The book doesn't have too many typos/errors and makes up for a pleasant reading.
Comment 12 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Paperback
Since there are many introductory texts on general Intel assembly programming out there, I expected a book specifically focussed on Linux aspects. This book is rather a first course in assembly language. It does not go deep enough to really get the Reader going with assembly programming under Linux. It is extremely badly structured - the explanation of some instructions is spread over 3 to 4 sections with other aspects constantly interfering and confusing the reader. The worst thing about the book is that it does not even have a short reference on the AT&T assembly syntax which is most frequently used under Linux. Instead, the author just mentions that this syntax exists, remarks that it is "unusual" for programmers used to Intel syntax, and illustrates the difference to Intel syntax with 2 examples. An introduction to using inline assembly with gcc is also missng. For the most obvious application - kernel/driver programming, which requires understanding AT&T assembly code in the kernel -, the book is therefore almost useless. Instead, it comes with a superfluous chapter on DOS assembly programming.
1 Comment 11 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
By John Furr on January 4, 2002
Format: Paperback
Not a bad book for an introduction to linux assemly. However if you are looking for floating point or SSE and SSE2 related material then I recommend going to Intels web site and downloading the material. All in all not a bad book, but it was kinda skimpy. Not enough meat to satisfy the taste buds.
Comment 6 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Paperback
this book starts by explaining the binary and hexadecimal numbering systems and does it very well, but it goes downhill after that. it may be useful to people who already know something about assembly language programming, but i found that i had to read and re-read passages to try to figure out what the author was getting at (why don't publishers employ editors?). in the end i just came away with a passive understanding of assembly language programming.
then i discovered "Computer Organization and Design" (COD), by Patterson and Hennessy. If you're a beginner and really want to learn about computer architecture and assembly language programming, get COD, not the book under review.
Comment 8 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Paperback
As other reviewers already mentioned, there's little about this book that is specific to Linux, besides brief mentions about system calls and how the Linux kernel manages memory using paging and doesn't use segmentation (although it did in earlier versions). The syntax used is also that of NASM, which is similar to MASM (Microsoft Assembler) and thus very different from the AT&T syntax used by the GNU tools such as GAS (the GNU Assembler). So don't get it expecting to see a lot of consideration about specific quirks to assembly programming under Linux.

But this would not fit into the book, anyway. It is clearly geared towards beginners: the material is quite basic and superficial, and assumes no previous knowledge of assembly, only a basic C programming background. The second chapter begins by describing the typical fetch-execute cycle of a CPU; this is very superficial and does not take account of pipelining, superscalar execution and other effects present in current processors. But it does give an idea about how the hardware works. Then there are chapters about arithmetic in different bases and binary signed arithmetic, a basic introduction to assembly, machine language, dealing with memory, the stack, and interrupts. Then there is a strange chapter in a book about Linux assembly language programming: DOS programs. It seems that the book was being prepared for DOS but then it became obsolete and the material was reworked to cater to Linux programmers.

Nevertheless, though quite basic and not enough about Linux, it can serve as a quick introduction to assembly programming for beginners. The organization could be better too, but I don't think it's that confusing. A beginner would have to look for other books after this, though, and an experienced programmer would be better off skipping it altogether.
Comment 3 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Paperback Verified Purchase
I have another book, Assembly Language Step By Step which is where I began learning. But its a very big book! So, this one is much smaller but still gets straight to the point. I don't know if it includes many programs, but it explains the concepts very very well. On the other hand, if you want to practice with many programs, you can also try the book I mentioned above.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse

Set up an Amazon Giveaway

Linux Assembly Language Programming
Amazon Giveaway allows you to run promotional giveaways in order to create buzz, reward your audience, and attract new followers and customers. Learn more about Amazon Giveaway
This item: Linux Assembly Language Programming

What Other Items Do Customers Buy After Viewing This Item?