Book description
If you've asked someone the secret to writing efficient, well-written software, the answer that you've probably gotten is "learn assembly language programming." By learning assembly language programming, you learn how the machine really operates and that knowledge will help you write better high-level language code. A dirty little secret assembly language programmers rarely admit to, however, is that what you really need to learn is machine organization, not assembly language programming. Write Great Code Vol I , the first in a series from assembly language expert Randall Hyde, dives right into machine organization without the extra overhead of learning assembly language programming at the same time. And since Write Great Code Vol I concentrates on the machine organization, not assembly language, the reader will learn in greater depth those subjects that are language-independent and of concern to a high level language programmer. Write Great Code Vol I will help programmers make wiser choices with respect to programming statements and data types when writing software, no matter which language they use.
Table of contents
- Write Great Code, Volume 1
- Acknowledgments
- 1. What You Need to Know to Write Great Code
-
2. Numeric Representation
- 2.1 What Is a Number?
- 2.2 Numbering Systems
- 2.3 Numeric/String Conversions
- 2.4 Internal Numeric Representation
- 2.5 Signed and Unsigned Numbers
- 2.6 Some Useful Properties of Binary Numbers
- 2.7 Sign Extension, Zero Extension, and Contraction
- 2.8 Saturation
- 2.9 Binary-Coded Decimal (BCD) Representation
- 2.10 Fixed-Point Representation
- 2.11 Scaled Numeric Formats
- 2.12 Rational Representation
- 2.13 For More Information
- 3. Binary Arithmetic and Bit Operations
- 4. Floating-Point Representation
-
5. Character Representation
- 5.1 Character Data
- 5.2 Character Strings
- 5.3 Character Sets
- 5.4 Designing Your Own Character Set
- 5.5 For More Information
- 6. Memory Organization and Access
- 7. Composite Data Types and Memory Objects
-
8. Boolean Logic and Digital Design
- 8.1 Boolean Algebra
- 8.2 Boolean Functions and Truth Tables
- 8.3 Function Numbers
- 8.4 Algebraic Manipulation of Boolean Expressions
- 8.5 Canonical Forms
- 8.6 Simplification of Boolean Functions
- 8.7 What Does This Have to Do with Computers, Anyway?
- 8.8 For More Information
-
9. CPU Architecture
- 9.1 Basic CPU Design
- 9.2 Decoding and Executing Instructions: Random Logic Versus Microcode
- 9.3 Executing Instructions, Step by Step
-
9.4 Parallelism — The Key to Faster Processing
- 9.4.1 The Prefetch Queue
- 9.4.2 Conditions That Hinder the Performance of the Prefetch Queue
- 9.4.3 Pipelining — Overlapping the Execution of Multiple Instructions
- 9.4.4 Instruction Caches — Providing Multiple Paths to Memory
- 9.4.5 Pipeline Hazards
- 9.4.6 Superscalar Operation — Executing Instructions in Parallel
- 9.4.7 Out-of-Order Execution
- 9.4.8 Register Renaming
- 9.4.9 Very Long Instruction Word (VLIW) Architecture
- 9.4.10 Parallel Processing
- 9.4.11 Multiprocessing
- 9.5 For More Information
-
10. Instruction Set Architecture
- 10.1 The Importance of the Design of the Instruction Set
- 10.2 Basic Instruction Design Goals
- 10.3 The Y86 Hypothetical Processor
- 10.4 Encoding 80x86 Instructions
- 10.5 Implications of Instruction Set Design to the Programmer
- 10.6 For More Information
-
11. Memory Architecture and Organization
- 11.1 The Memory Hierarchy
- 11.2 How the Memory Hierarchy Operates
- 11.3 Relative Performance of Memory Subsystems
- 11.4 Cache Architecture
- 11.5 Virtual Memory, Protection, and Paging
- 11.6 Thrashing
- 11.7 NUMA and Peripheral Devices
- 11.8 Writing Software That Is Cognizant of the Memory Hierarchy
- 11.9 Run-Time Memory Organization
- 11.10 For More Information
-
12. Input and Output (I/O)
- 12.1 Connecting a CPU to the Outside World
- 12.2 Other Ways to Connect Ports to the System
- 12.3 I/O Mechanisms
- 12.4 I/O Speed Hierarchy
- 12.5 System Buses and Data Transfer Rates
- 12.6 Buffering
- 12.7 Handshaking
- 12.8 Time-outs on an I/O Port
- 12.9 Interrupts and Polled I/O
- 12.10 Protected Mode Operation and Device Drivers
- 12.11 Exploring Specific PC Peripheral Devices
- 12.12 The Keyboard
- 12.13 The Standard PC Parallel Port
- 12.14 Serial Ports
- 12.15 Disk Drives
- 12.16 Tape Drives
- 12.17 Flash Storage
- 12.18 RAM Disks and Semiconductor Disks
- 12.19 SCSI Devices and Controllers
- 12.20 The IDE/ATA Interface
- 12.21 File Systems on Mass Storage Devices
- 12.22 Writing Software That Manipulates Data on a Mass Storage Device
- 12.23 The Universal Serial Bus (USB)
- 12.24 Mice, Trackpads, and Other Pointing Devices
- 12.25 Joysticks and Game Controllers
- 12.26 Sound Cards
- 12.27 For More Information
- 13. Thinking Low-Level, Writing High-Level
- A. ASCII Character Set
- Index
- Copyright
Product information
- Title: Write Great Code
- Author(s):
- Release date: November 2004
- Publisher(s): No Starch Press
- ISBN: 9781593270032
You might also like
book
Hacking: The Art of Exploitation, 2nd Edition
Hacking is the art of creative problem solving, whether that means finding an unconventional solution to …
book
Computer Graphics from Scratch
Computer graphics are at work everywhere today, adding eye-popping details to video games, hyper-realistic CGI to …
book
Introduction to Computer Organization
Introduction to Computer Organization gives programmers a practical understanding of what happens in a computer when …
book
The Art of 64-Bit Assembly, Volume 1
Randall Hyde's The Art of Assembly Language has long been the go-to guide for learning assembly …