Poised Solutions Library

Poised Solutions Tech Library

write great code
understanding the machine book review

Poised Solutions

Write Great Code Book Review

Coding

IT Library

Write Great Code Understanding the Machine

Write Great Code Understanding the Machine

Amazon UKAmazon USA
Write Great Code Understanding the Machine
Author:
Randall Hyde
Publisher:
No Starch Press
Published:
2004
Pages:
444

Write Great Code Understanding the Machine is one of the most informative books on low level programming I have read. Write Great Code Understanding the Machine looks at programming from the hardware up, and there are some great insights and little known facts of computer programming to be found in Write Great Code Understanding the Machine.


Write Great Code Understanding the Machine Chapters

Write Great Code Understanding the Machine Chapters
  1. What You Need to Know to Write Great Code
    • The Write Great Code Series
    • What this Volume Covers
    • Assumptions this Volume Makes
    • Characteristics of Great Code
    • The Environment for this Volume
    • For More Information
  2. Numeric Representation
    • What is a Number?
    • Numbering Systems
      • The Deicmal Positional Numbering System
      • Radix (Base)
      • The Binary Numbering System
      • The Hexadecimal Numbering System
      • The Octal (Base-8) Numbering System
    • Numeric / String Conversions
    • Internal Numeric Representation
      • Bits
      • Bit Strings
    • Signed or Unisgned Numbers
    • Some Useful Properties of Binary Numbers
    • Sign Extension, Zero Extension, and Contraction
    • Saturation
    • Binary Coded Decimal (BCD) Representation
    • Fixed-Point Representation
    • Scaled Numeric Formats
    • Rational Represenation
    • For More Information
  3. Binary Arithmetic and Bit Operations
    • Arithmetic Operations on Binary and Hexadeicmal Numbers
      • Adding Binary Values
      • Subtracting Binary Values
      • Multiplying Binary Values
      • Dividing Binary Values
    • Logical Operations on Bits
    • Logical Operations on Ninary Numbers and Bit Strings
    • Useful Bit Operations
      • Testing Bits in a Bit String Using AND
      • Testing a Set of Bits for Zero / Not Zero Using AND
      • Comparing a Set of Bits Within a Binary String
      • Creating Modula-n Counters Using AND
    • Shifts and Rotates
    • Bit Fields and Packed Data
    • Packing and Unpacking Data
  4. Floating Point Representation
    • Introduction to Floating-Point Arithmetic
    • IEEE Floating Point Formats
      • Single Precision Floating-Point Format
      • Double Precision Floating-Point Format
      • Extended Precision Floating-Point Format
    • Normalization and Denormalized Values
    • Rounding
    • Special Floating Point Values
    • Floating Point Exceptions
    • Floating Point Operations
      • Floating Point Representation
      • Floating Point Addition and Subtraction
      • Floating Point Multiplication and Division
  5. Character Representation
    • Character Data
      • The ASCII Character Set
      • The EBCDIC Character Set
      • Double-Byte Character Set
      • The Unicode Character Set
    • Character Strings
      • Character String Formats
      • Types of String: Static, Pseudo-Dynamic, and Dynamic
      • Reference Counting for Strings
      • Delphi / Kylix Strings
      • Creating Your Own String Formats
    • Character Sets
      • Powerset Representations of Character Sets
      • List Representation of Character Sets
    • Designing Your Own Character Set
      • Designing an Efficient Character Set
      • Grouping the Character Codes for Numeric Digits
      • Grouping Alphabetic Characters
      • Comparing Alphabetic Characters
      • Other Character Groupings
  6. Memory Organization and Access
    • The Basic System Components
      • The System Bus
      • The Address Bus
      • The Control Bus
    • Physical Organization of Memory
      • 8-Bit Data Buses
      • 16-Bit Data Buses
      • 32-Bit Data Buses
      • 64-Bit Buses
      • Small Access on Non-80x86 Processors
    • Big Endian Versus Little Endian Organization
    • The System Clock
      • Memory Access and the System Clock
      • Wait States
      • Cache Memory
    • CPU Memory Access
      • The Direct Memory Addressing Mode
      • The Indirect Addressing Mode
      • The Indexed Addressing Mode
      • The Scaled Indexed Addressing Modes
    • For More Information
  7. Composite Data Types and Memory Objects
    • Pointer Types
      • Pointer Implementation
      • Pointers and Dynamic Memory Allocation
      • Pointer Operations and Pointer Arithmetic
    • Arrays
      • Array Declarations
      • Array Representation in Memory
      • Accessing Elements of an Array
      • Multidimensional Arrays
    • Records / Structures
      • Record in Pascal / Delphi
      • Records in C / C++
      • Records in HLA
      • Memory Storage of Records
    • Discriminant Unions
      • Unions in C / C++
      • Unions in Pascal / Delphi / Kylix
      • Unions in HLA
      • Memory Storage of Unions
      • Other Uses of Unions
    • For More Information
  8. Boolean Logic and Digital Design
    • Boolean Algebra
      • The Boolean Operators
      • Boolean Postulates
      • Boolean Operator Precedence
    • Boolean Functions and Truth Tables
    • Function Numbers
    • Algebraic Manipulation of Boolean Expressions
    • Canonical Forms
      • Sum of Minterms Canonical Form and Truth Tables
      • Deriving the Sum of Minterms Canonical Form Algebraically
      • Product of Maxterms Canonical Form
    • Simplification of Boolean Functions
    • What Does This Have to Do with Computers Anyway?
      • Correspondence Between Electronic Circuits and Boolean Functions
      • Combinatorial Circuits
      • Sequential and Clocked Logic
    • For More Information
  9. CPU Architecture
    • Basic CPU Design
    • Decoding and Executing Instructions: Random Logic Versus Microcode
    • Executing Instructions, Step by Step
      • The mov Instruction
      • the add Instruction
      • The jnz Instruction
      • The loop Instruction
    • Parallelism - The Key to Faster Processing
      • The Prefetch Queue
      • Conditions That Hinder the Performance of the Prefetch Queue
      • Pipelining - Overlapping the Execution of Multiple Instructions
      • Instruction Caches - Providing Multiple Paths to Memory
      • Pipeline Hazards
      • Superscalar Operation - Executing Instructions in Parallel
      • Out-of-Order Execution
      • Register Renaming
      • Very Long instruction Word (VLIW) Architecture
      • Parallel Processing
      • Multiprocessing
    • For More Informations
  10. Instruction Set Architecture
    • The Importance of the Design of the Instruction Set
    • Basic Instruction Design Goals
      • Choosing Opcode Length
      • Planning for the Future
      • Choosing Instructions
      • Assigning Opcodes to Instructions
    • The Y86 Hypothetical Processor
      • Y86 Limitations
      • Y86 Instructions
      • Addressing Modes on the Y86
      • Encoding Y86 Instructions
      • Examples of Encoding Y86 Instructions
      • Extending the Y86 Instruction Set
    • Encoding 80x86 Instructions
      • Encoding Instruction Operands
      • Encoding the add Instruction - Some Examples
      • Encoding Immediate Operands
      • Encoding 8, 16 and 32-Bit Operands
      • Alternate Encodings for Instructions
    • Implications of Instruction Set Design to the Programmer
    • For More Information
  11. Memory Architecture and Organization
    • The Memory Hierarchy
    • How the Memory Hierarchy Operates
    • Relative Performance of Memory Subsystems
    • Cache Architecture
      • Direct Mapped Cache
      • Fully Associative Cache
      • n-Way Set Associative Cache
      • Matching the Caching Scheme to the type of Data Access
      • Cache Line Replacement Policies
      • Writing Data to memory
      • Cache Use and Software
    • Virtual Memory, Protection and Paging
    • Thrashing
    • NUMA and Peripheral Devices
    • Writing Software that is Cognizant of the Memory Hierarchy
    • Run-Time Memory Organization
      • Static and Dynamic Objects, Binding and Lifetime
      • The Code, Read-Only, and Constant Sections
      • The Static Variables Section
      • The Uninitialized Storage (BSS) Section
      • The Stack Section
      • The Heap Section and Dynamic Memory Allocation
    • For More Information
  12. Input and Output (I/O)
    • Connecting a CPU to the Outside World
    • Other Ways to connect Ports to the System
    • I/O Mechanisms
      • Memory Mapped I/O
      • I/O and the Cache
      • I/O Mapped Input / Output
      • Direct Memory Access (DMA)
    • I/O Speed Hierarchy
    • System Buses and Data Transfer Rates
      • Performance of the PCI Bus
      • Performance of the ISA Bus
      • The AGP Bus
    • Buffering
    • Handshaking
    • Time-outs on an I/O Port
    • Interrupts and Polled I/O
    • Protected Mode Operation and Device Drivers
      • Device Drivers
      • Communicating with Device Drivers and Files
    • Exploring Specific PC Parallel Devices
    • Serial Ports
    • Disk Drives
      • Floppy Drives
      • hard Drives
      • RAID Systems
      • Zip and Other Floptical Drives
      • Optical Drives
      • CD-ROM, CD-R, CR-R/W, DVD, DVD-R, DVD-RAM, and DVD-R/W Drives
    • Tape Drives
    • Flash Storage
    • RAM Disks and Seminconductor Disks
    • SCSI Devices and Controllers
    • The IDE/ATA Interface
    • File Systems on Mass Storage Devices
      • Maintaining Files Using a Free-Space Bitmap
      • File Allocation Tables
      • List-of-Blocks File Organization
    • Writing Software that Manipulates Data on a Mass Storage Device
      • File Access Performance
      • Synchronous and Asynchronous I/O
      • The Implications of I/O type
      • Memory-Mapped Files
    • The Universal Serial Bus (USB)
      • USB Design
      • USB Performance
      • Types of USB Transmissions
      • USB Device Drivers
    • Mice Trackpads, and Other Pointing Devices
    • Joysticks and Game Controllers
    • Sound Cards
      • How Audio Interface Peripheral Produce Sound
      • The Audio and MIDI File Formats
      • Programming Audio Devices
    • More Information
  13. Thinking Low Level, Writing High Level
Write Great Code Understanding the Machine Appendices
  1. ASCII Character Set
  2. Index

Philosophy



















Poised Solutions Web Development and Web Design by Poised Solutions IT Practice

Guild of Developers  •  PantheonOS  •  Cyber Security