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
Write Great Code, Volume 2, 2nd Edition
Today’s programming languages offer productivity and portability, but also make it easy to write sloppy code …
book
Write Great Code, Volume 1, 2nd Edition
This, the first volume in Randall Hyde’s Write Great Code series, dives into machine organization without …
book
Write Great Code, Volume 2
The second volume in the Write Great Code series supplies the critical information that today's computer …
book
Think Like a Programmer
In this one-of-a-kind text, author V. Anton Spraul breaks down the ways that programmers solve problems …