Synopses & Reviews
- 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
- The four-field format
- Machine language
- The stack
- Linux user programs
- DOS programs
- Bit manipulations
- Device drivers
- And more...
Master x86 language from the Linux point of view with this one-concept-at-a-time guide. Neveln gives an "under the hood" perspective of how Linux works and shows how to create device drivers. The CD-ROM includes all source code from the book plus edlinas, an x86 simulator that's perfect for hands-on, interactive assembler development.
A practical tutorial to programming in assembly language on the Linux platform with a special emphasis on developing device drivers. Included with the book is a CD-ROM.
About the Author
BOB NEVELN is currently coordinator of Computer Science at Widener University, where has worked on the mathematics and evolution of the genetic code. He holds a Ph.D. in Mathematics from Northwestern University.
Table of Contents
The Fetch-Execute Cycle. The Linux Operating System. The Gnu C Compiler. The Edlinas Assembler. NASM. Other Assemblers.
2. Placeholding Numeration.
The Decimal and Pentimal Systems. Pentimal Arithmetic. Conversion to Pentimal. The Binary System. Memory as a Rectangle of Bits. The Hexadecimal System. Base Distinguishing Notations. Fractions in Other Bases. Converting Fractions.
3. Logic Circuits and Computation.
The NOT Gate. Boolean Operators. Logic Gates. Addition Circuits. Sequential Circuits. Negative Number Representation. Subtraction Using Negation. Placeholding Two's Complement. Memory Circuits. x86 General Registers and their Ancestry. The MOV Command. Addition and Subtraction Commands. Multiplication and Division Commands.
4. Assembly Language.
The Four Field Format. Computers from the CPU Standpoint. Simple Assembly Language Programs. Assembler Programs with Jumps. Assembler Programs with Loops. Signed Comparisons. Unsigned Comparisons. Linux .s files.
5. Machine Language.
Assembling Simple Programs. Opcode Space. The ModRM Byte. 386 Space (0F + ...). 32-Bit vs 16-Bit Code. The 8-Bit Registers. Linux .o Files.
4-Byte Data Width. Addresses in Brackets. Operand Size Ambiguity. Labels. Immediate Storage.
7. The Stack.
Push and Pop Operations. Subprograms. Parameter Passing. Recursion.
8. Linux User Programs.
Multitasking. Paging. Address Translation. Program Segments. Other Data Segments. Protection. Executable Files in ELF Format. Object Files in ELF Format.
Polling. External Interrupts. ISA Architecture. Internal and Software Interrupts. System Calls. Privilege Levels. Control Transfer. Scheduling.
10. Bit Manipulations.
Bitwise Logic Operations. The AND, OR, NOT, and XOR Commands. Bit Setting and Testing. Shift Instructions.
11. Device Drivers.
Device-Independent Files. Devices as Files. Morse Code Speaker Driver. Serial Port Digitizer Driver.
12. DOS Programs.
Real Mode Segmentation. Edlinas Environment Variables. Fixed Memory Areas. Real Mode Interrupts. Checking DOS Memory.
13. Linux Boot Time Programs.
Changing to Protected Mode. Protected Mode Segmentation. Setting Up the Global Descriptor Table. Closing.