Books & Videos

Table of Contents

  1. Chapter 1 What You Need to Know to Write Great Code

    1. 1.1 The Write Great Code Series

    2. 1.2 What This Volume Covers

    3. 1.3 Assumptions This Volume Makes

    4. 1.4 Characteristics of Great Code

    5. 1.5 The Environment for This Volume

    6. 1.6 For More Information

  2. Chapter 2 Numeric Representation

    1. 2.1 What Is a Number?

    2. 2.2 Numbering Systems

    3. 2.3 Numeric/String Conversions

    4. 2.4 Internal Numeric Representation

    5. 2.5 Signed and Unsigned Numbers

    6. 2.6 Some Useful Properties of Binary Numbers

    7. 2.7 Sign Extension, Zero Extension, and Contraction

    8. 2.8 Saturation

    9. 2.9 Binary-Coded Decimal (BCD) Representation

    10. 2.10 Fixed-Point Representation

    11. 2.11 Scaled Numeric Formats

    12. 2.12 Rational Representation

    13. 2.13 For More Information

  3. Chapter 3 Binary Arithmetic and Bit Operations

    1. 3.1 Arithmetic Operations on Binary and Hexadecimal Numbers

    2. 3.2 Logical Operations on Bits

    3. 3.3 Logical Operations on Binary Numbers and Bit Strings

    4. 3.4 Useful Bit Operations

    5. 3.5 Shifts and Rotates

    6. 3.6 Bit Fields and Packed Data

    7. 3.7 Packing and Unpacking Data

    8. 3.8 For More Information

  4. Chapter 4 Floating-Point Representation

    1. 4.1 Introduction to Floating-Point Arithmetic

    2. 4.2 IEEE Floating-Point Formats

    3. 4.3 Normalization and Denormalized Values

    4. 4.4 Rounding

    5. 4.5 Special Floating-Point Values

    6. 4.6 Floating-Point Exceptions

    7. 4.7 Floating-Point Operations

    8. 4.8 For More Information

  5. Chapter 5 Character Representation

    1. 5.1 Character Data

    2. 5.2 Character Strings

    3. 5.3 Character Sets

    4. 5.4 Designing Your Own Character Set

    5. 5.5 For More Information

  6. Chapter 6 Memory Organization and Access

    1. 6.1 The Basic System Components

    2. 6.2 Physical Organization of Memory

    3. 6.3 Big Endian Versus Little Endian Organization

    4. 6.4 The System Clock

    5. 6.5 CPU Memory Access

    6. 6.6 For More Information

  7. Chapter 7 Composite Data Types and Memory Objects

    1. 7.1 Pointer Types

    2. 7.2 Arrays

    3. 7.3 Records/Structures

    4. 7.4 Discriminant Unions

    5. 7.5 For More Information

  8. Chapter 8 Boolean Logic and Digital Design

    1. 8.1 Boolean Algebra

    2. 8.2 Boolean Functions and Truth Tables

    3. 8.3 Function Numbers

    4. 8.4 Algebraic Manipulation of Boolean Expressions

    5. 8.5 Canonical Forms

    6. 8.6 Simplification of Boolean Functions

    7. 8.7 What Does This Have to Do with Computers, Anyway?

    8. 8.8 For More Information

  9. Chapter 9 CPU Architecture

    1. 9.1 Basic CPU Design

    2. 9.2 Decoding and Executing Instructions: Random Logic Versus Microcode

    3. 9.3 Executing Instructions, Step by Step

    4. 9.4 Parallelism — The Key to Faster Processing

    5. 9.5 For More Information

  10. Chapter 10 Instruction Set Architecture

    1. 10.1 The Importance of the Design of the Instruction Set

    2. 10.2 Basic Instruction Design Goals

    3. 10.3 The Y86 Hypothetical Processor

    4. 10.4 Encoding 80x86 Instructions

    5. 10.5 Implications of Instruction Set Design to the Programmer

    6. 10.6 For More Information

  11. Chapter 11 Memory Architecture and Organization

    1. 11.1 The Memory Hierarchy

    2. 11.2 How the Memory Hierarchy Operates

    3. 11.3 Relative Performance of Memory Subsystems

    4. 11.4 Cache Architecture

    5. 11.5 Virtual Memory, Protection, and Paging

    6. 11.6 Thrashing

    7. 11.7 NUMA and Peripheral Devices

    8. 11.8 Writing Software That Is Cognizant of the Memory Hierarchy

    9. 11.9 Run-Time Memory Organization

    10. 11.10 For More Information

  12. Chapter 12 Input and Output (I/O)

    1. 12.1 Connecting a CPU to the Outside World

    2. 12.2 Other Ways to Connect Ports to the System

    3. 12.3 I/O Mechanisms

    4. 12.4 I/O Speed Hierarchy

    5. 12.5 System Buses and Data Transfer Rates

    6. 12.6 Buffering

    7. 12.7 Handshaking

    8. 12.8 Time-outs on an I/O Port

    9. 12.9 Interrupts and Polled I/O

    10. 12.10 Protected Mode Operation and Device Drivers

    11. 12.11 Exploring Specific PC Peripheral Devices

    12. 12.12 The Keyboard

    13. 12.13 The Standard PC Parallel Port

    14. 12.14 Serial Ports

    15. 12.15 Disk Drives

    16. 12.16 Tape Drives

    17. 12.17 Flash Storage

    18. 12.18 RAM Disks and Semiconductor Disks

    19. 12.19 SCSI Devices and Controllers

    20. 12.20 The IDE/ATA Interface

    21. 12.21 File Systems on Mass Storage Devices

    22. 12.22 Writing Software That Manipulates Data on a Mass Storage Device

    23. 12.23 The Universal Serial Bus (USB)

    24. 12.24 Mice, Trackpads, and Other Pointing Devices

    25. 12.25 Joysticks and Game Controllers

    26. 12.26 Sound Cards

    27. 12.27 For More Information

  13. Chapter 13 Thinking Low-Level, Writing High-Level

  1. Appendix ASCII Character Set