Introduction to Computing Systems
Subtitle: From Bits and Gates to C and Beyond
Publisher: McGraw-Hill Higher Education
Published: June 2003
Language: eng
Number of pages: 632
ISBN-13: 9780071215039
First sentence: Welcome to From Bits and Gates to C and Beyond.
Table of contents: title: Preface
pagenum: xi; title: Preface to the First Edition
pagenum: xvii; label: 1
title: Welcome Aboard
pagenum: 1; label: 1.1
title: What We Will Try to Do
pagenum: 1; label: 1.2
title: How We Will Get There
pagenum: 2; label: 1.3
title: Two Recurring Themes
pagenum: 3; label: 1.3.1
title: The Notion of Abstraction
pagenum: 3; label: 1.3.2
title: Hardware versus Software
pagenum: 5; label: 1.4
title: A Computer System
pagenum: 7; label: 1.5
title: Two Very Important Ideas
pagenum: 9; label: 1.6
title: Computers as Universal Computational Devices
pagenum: 9; label: 1.7
title: How Do We Get the Electrons to Do the Work?
pagenum: 12; label: 1.7.1
title: The Statement of the Problem
pagenum: 13; label: 1.7.2
title: The Algorithm
pagenum: 13; label: 1.7.3
title: The Program
pagenum: 14; label: 1.7.4
title: The ISA
pagenum: 14; label: 1.7.5
title: The Microarchitecture
pagenum: 15; label: 1.7.6
title: The Logic Circuit
pagenum: 16; label: 1.7.7
title: The Devices
pagenum: 16; label: 1.7.8
title: Putting It Together
pagenum: 16; title: Exercises
pagenum: 17; label: 2
title: Bits, Data Types, and Operations
pagenum: 21; label: 2.1
title: Bits and Data Types
pagenum: 21; label: 2.1.1
title: The Bit as the Unit of Information
pagenum: 21; label: 2.1.2
title: Data Types
pagenum: 22; label: 2.2
title: Integer Data Types
pagenum: 23; label: 2.2.1
title: Unsigned Integers
pagenum: 23; label: 2.2.2
title: Signed Integers
pagenum: 23; label: 2.3
title: 2's Complement Integers
pagenum: 25; label: 2.4
title: Binary-Decimal Conversion
pagenum: 27; label: 2.4.1
title: Binary to Decimal Conversion
pagenum: 27; label: 2.4.2
title: Decimal to Binary Conversion
pagenum: 28; label: 2.5
title: Operations on Bits—Part I: Arithmetic
pagenum: 29; label: 2.5.1
title: Addition and Subtraction
pagenum: 29; label: 2.5.2
title: Sign-Extension
pagenum: 30; label: 2.5.3
title: Overflow
pagenum: 31; label: 2.6
title: Operations on Bits—Part II: Logical Operations
pagenum: 33; label: 2.6.1
title: The And Function
pagenum: 33; label: 2.6.2
title: The Or Function
pagenum: 34; label: 2.6.3
title: The Not Function
pagenum: 35; label: 2.6.4
title: The Exclusive-Or Function
pagenum: 35; label: 2.7
title: Other Representations
pagenum: 36; label: 2.7.1
title: The Bit Vector
pagenum: 36; label: 2.7.2
title: Floating Point Data Type
pagenum: 37; label: 2.7.3
title: ASCII Codes
pagenum: 40; label: 2.7.4
title: Hexadecimal Notation
pagenum: 41; title: Exercises
pagenum: 43; label: 3
title: Digital Logic Structures
pagenum: 51; label: 3.1
title: The Transistor
pagenum: 51; label: 3.2
title: Logic Gates
pagenum: 53; label: 3.2.1
title: The Not Gate (Inverter)
pagenum: 53; label: 3.2.2
title: Or and Nor Gates
pagenum: 54; label: 3.2.3
title: And and Nand Gates
pagenum: 56; label: 3.2.4
title: DeMorgan's Law
pagenum: 58; label: 3.2.5
title: Larger Gates
pagenum: 58; label: 3.3
title: Combinational Logic Circuits
pagenum: 59; label: 3.3.1
title: Decoder
pagenum: 59; label: 3.3.2
title: Mux
pagenum: 60; label: 3.3.3
title: Full Adder
pagenum: 61; label: 3.3.4
title: The Programmable Logic Array (PLA)
pagenum: 63; label: 3.3.5
title: Logical Completeness
pagenum: 64; label: 3.4
title: Basic Storage Elements
pagenum: 64; label: 3.4.1
title: The R-S Latch
pagenum: 64; label: 3.4.2
title: The Gated D Latch
pagenum: 66; label: 3.4.3
title: A Register
pagenum: 66; label: 3.5
title: The Concept of Memory
pagenum: 67; label: 3.5.1
title: Address Space
pagenum: 68; label: 3.5.2
title: Addressability
pagenum: 68; label: 3.5.3
title: A 22-by-3-Bit Memory
pagenum: 68; label: 3.6
title: Sequential Logic Circuits
pagenum: 70; label: 3.6.1
title: A Simple Example: The Combination Lock
pagenum: 71; label: 3.6.2
title: The Concept of State
pagenum: 72; label: 3.6.3
title: Finite State Machines
pagenum: 74; label: 3.6.4
title: An Example: The Complete Implementation of a Finite State Machine
pagenum: 77; label: 3.7
title: The Data Path of the LC-3
pagenum: 80; title: Exercises
pagenum: 82; label: 4
title: The von Neumann Model
pagenum: 97; label: 4.1
title: Basic Components
pagenum: 97; label: 4.1.1
title: Memory
pagenum: 98; label: 4.1.2
title: Processing Unit
pagenum: 99; label: 4.1.3
title: Input and Output
pagenum: 100; label: 4.1.4
title: Control Unit
pagenum: 100; label: 4.2
title: The LC-3: An Example von Neumann Machine
pagenum: 101; label: 4.3
title: Instruction Processing
pagenum: 103; label: 4.3.1
title: The Instruction
pagenum: 103; label: 4.3.2
title: The Instruction Cycle
pagenum: 104; label: 4.4
title: Changing the Sequence of Execution
pagenum: 107; label: 4.4.1
title: Control of the Instruction Cycle
pagenum: 108; label: 4.5
title: Stopping the Computer
pagenum: 110; title: Exercises
pagenum: 111; label: 5
title: The LC-3
pagenum: 115; label: 5.1
title: The ISA: Overview
pagenum: 115; label: 5.1.1
title: Memory Organization
pagenum: 116; label: 5.1.2
title: Registers
pagenum: 116; label: 5.1.3
title: The Instruction Set
pagenum: 117; label: 5.1.4
title: Opcodes
pagenum: 117; label: 5.1.5
title: Data Types
pagenum: 118; label: 5.1.6
title: Addressing Modes
pagenum: 118; label: 5.1.7
title: Condition Codes
pagenum: 120; label: 5.2
title: Operate Instructions
pagenum: 120; label: 5.3
title: Data Movement Instructions
pagenum: 123; label: 5.3.1
title: PC-Relative Mode
pagenum: 124; label: 5.3.2
title: Indirect Mode
pagenum: 125; label: 5.3.3
title: Base+offset Mode
pagenum: 127; label: 5.3.4
title: Immediate Mode
pagenum: 128; label: 5.3.5
title: An Example
pagenum: 129; label: 5.4
title: Control Instructions
pagenum: 130; label: 5.4.1
title: Conditional Branches
pagenum: 131; label: 5.4.2
title: An Example
pagenum: 132; label: 5.4.3
title: Two Methods for Loop Control
pagenum: 135; label: 5.4.4
title: Example: Adding a Column of Numbers Using a Sentinel
pagenum: 135; label: 5.4.5
title: The JMP Instruction
pagenum: 136; label: 5.4.6
title: The TRAP Instruction
pagenum: 137; label: 5.5
title: Another Example: Counting Occurrences of a Character
pagenum: 138; label: 5.6
title: The Data Path Revisited
pagenum: 141; label: 5.6.1
title: Basic Components of the Data Path
pagenum: 141; label: 5.6.2
title: The Instruction Cycle
pagenum: 144; title: Exercises
pagenum: 145; label: 6
title: Programming
pagenum: 155; label: 6.1
title: Problem Solving
pagenum: 155; label: 6.1.1
title: Systematic Decomposition
pagenum: 155; label: 6.1.2
title: The Three Constructs: Sequential, Conditional, Iterative
pagenum: 156; label: 6.1.3
title: LC-3 Control Instructions to Implement the Three Constructs
pagenum: 157; label: 6.1.4
title: The Character Count Example from Chapter 5, Revisited
pagenum: 158; label: 6.2
title: Debugging
pagenum: 162; label: 6.2.1
title: Debugging Operations
pagenum: 163; label: 6.2.2
title: Examples: Use of the Interactive Debugger
pagenum: 164; title: Exercises
pagenum: 172; label: 7
title: Assembly Language
pagenum: 177; label: 7.1
title: Assembly Language Programming—Moving Up a Level
pagenum: 177; label: 7.2
title: An Assembly Language Program
pagenum: 178; label: 7.2.1
title: Instructions
pagenum: 179; label: 7.2.2
title: Pseudo-ops (Assembler Directives)
pagenum: 182; label: 7.2.3
title: Example: The Character Count Example of Section 5.5, Revisited
pagenum: 183; label: 7.3
title: The Assembly Process
pagenum: 185; label: 7.3.1
title: Introduction
pagenum: 185; label: 7.3.2
title: A Two-Pass Process
pagenum: 185; label: 7.3.3
title: The First Pass: Creating the Symbol Table
pagenum: 186; label: 7.3.4
title: The Second Pass: Generating the Machine Language Program
pagenum: 187; label: 7.4
title: Beyond the Assembly of a Single Assembly Language Program
pagenum: 188; label: 7.4.1
title: The Executable Image
pagenum: 189; label: 7.4.2
title: More than One Object File
pagenum: 189; title: Exercises
pagenum: 190; label: 8
title: I/O
pagenum: 199; label: 8.1
title: I/O Basics
pagenum: 199; label: 8.1.1
title: Device Registers
pagenum: 199; label: 8.1.2
title: Memory-Mapped I/O versus Special Input/Output Instructions
pagenum: 200; label: 8.1.3
title: Asynchronous versus Synchronous
pagenum: 200; label: 8.1.4
title: Interrupt-Driven versus Polling
pagenum: 202; label: 8.2
title: Input from the Keyboard
pagenum: 202; label: 8.2.1
title: Basic Input Registers (the KBDR and the KBSR)
pagenum: 202; label: 8.2.2
title: The Basic Input Service Routine
pagenum: 202; label: 8.2.3
title: Implementation of Memory-Mapped Input
pagenum: 203; label: 8.3
title: Output to the Monitor
pagenum: 204; label: 8.3.1
title: Basic Output Registers (the DDR and the DSR)
pagenum: 204; label: 8.3.2
title: The Basic Output Service Routine
pagenum: 205; label: 8.3.3
title: Implementation of Memory-Mapped Output
pagenum: 206; label: 8.3.4
title: Example: Keyboard Echo
pagenum: 207; label: 8.4
title: A More Sophisticated Input Routine
pagenum: 207; label: 8.5
title: Interrupt-Driven I/O
pagenum: 209; label: 8.5.1
title: What Is Interrupt-Driven I/O?
pagenum: 209; label: 8.5.2
title: Why Have Interrupt-Driven I/O?
pagenum: 210; label: 8.5.3
title: Generation of the Interrupt Signal
pagenum: 211; label: 8.6
title: Implementation of Memory-Mapped I/O, Revisited
pagenum: 214; title: Exercises
pagenum: 215; label: 9
title: TRAP Routines and Subroutines
pagenum: 219; label: 9.1
title: LC-3 TRAP Routines
pagenum: 219; label: 9.1.1
title: Introduction
pagenum: 219; label: 9.1.2
title: The TRAP Mechanism
pagenum: 220; label: 9.1.3
title: The TRAP Instruction
pagenum: 221; label: 9.1.4
title: The Complete Mechanism
pagenum: 222; label: 9.1.5
title: TRAP Routines for Handling I/O
pagenum: 225; label: 9.1.6
title: TRAP Routine for Halting the Computer
pagenum: 225; label: 9.1.7
title: Saving and Restoring Registers
pagenum: 229; label: 9.2
title: Subroutines
pagenum: 230; label: 9.2.1
title: The Call/Return Mechanism
pagenum: 230; label: 9.2.2
title: The JSR(R) Instruction
pagenum: 232; label: 9.2.3
title: The TRAP Routine for Character Input, Revisited
pagenum: 233; label: 9.2.4
title: PUTS: Writing a Character String to the Monitor
pagenum: 235; label: 9.2.5
title: Library Routines
pagenum: 235; title: Exercises
pagenum: 240; label: 10
title: And, Finally ... The Stack
pagenum: 251; label: 10.1
title: The Stack: Its Basic Structure
pagenum: 251; label: 10.1.1
title: The Stack—An Abstract Data Type
pagenum: 251; label: 10.1.2
title: Two Example Implementations
pagenum: 252; label: 10.1.3
title: Implementation in Memory
pagenum: 253; label: 10.1.4
title: The Complete Picture
pagenum: 257; label: 10.2
title: Interrupt-Driven I/O (Part 2)
pagenum: 258; label: 10.2.1
title: Initiate and Service the Interrupt
pagenum: 259; label: 10.2.2
title: Return from the Interrupt
pagenum: 261; label: 10.2.3
title: An Example
pagenum: 262; label: 10.3
title: Arithmetic Using a Stack
pagenum: 264; label: 10.3.1
title: The Stack as Temporary Storage
pagenum: 264; label: 10.3.2
title: An Example
pagenum: 265; label: 10.3.3
title: OpAdd, OpMult, and OpNeg
pagenum: 265; label: 10.4
title: Data Type Conversion
pagenum: 272; label: 10.4.1
title: Example: The Bogus Program: 2 + 3 = ?
pagenum: 272; label: 10.4.2
title: ASCII to Binary
pagenum: 273; label: 10.4.3
title: Binary to ASCII
pagenum: 276; label: 10.5
title: Our Final Example: The Calculator
pagenum: 278; title: Exercises
pagenum: 283; label: 11
title: Introduction to Programming in C
pagenum: 289; label: 11.1
title: Our Objective
pagenum: 289; label: 11.2
title: Bridging the Gap
pagenum: 290; label: 11.3
title: Translating High-Level Language Programs
pagenum: 292; label: 11.3.1
title: Interpretation
pagenum: 292; label: 11.3.2
title: Compilation
pagenum: 293; label: 11.3.3
title: Pros and Cons
pagenum: 293; label: 11.4
title: The C Programming Language
pagenum: 293; label: 11.4.1
title: The C Compiler
pagenum: 295; label: 11.5
title: A Simple Example
pagenum: 297; label: 11.5.1
title: The Function main
pagenum: 297; label: 11.5.2
title: Formatting, Comments, and Style
pagenum: 299; label: 11.5.3
title: The C Preprocessor
pagenum: 300; label: 11.5.4
title: Input and Output
pagenum: 301; label: 11.6
title: Summary
pagenum: 304; title: Exercises
pagenum: 305; label: 12
title: Variables and Operators
pagenum: 307; label: 12.1
title: Introduction
pagenum: 307; label: 12.2
title: Variables
pagenum: 308; label: 12.2.1
title: Three Basic Data Types: int, char, double
pagenum: 308; label: 12.2.2
title: Choosing Identifiers
pagenum: 310; label: 12.2.3
title: Scope: Local versus Global
pagenum: 311; label: 12.2.4
title: More Examples
pagenum: 313; label: 12.3
title: Operators
pagenum: 314; label: 12.3.1
title: Expressions and Statements
pagenum: 315; label: 12.3.2
title: The Assignment Operator
pagenum: 316; label: 12.3.3
title: Arithmetic Operators
pagenum: 317; label: 12.3.4
title: Order of Evaluation
pagenum: 318; label: 12.3.5
title: Bitwise Operators
pagenum: 319; label: 12.3.6
title: Relational Operators
pagenum: 320; label: 12.3.7
title: Logical Operators
pagenum: 322; label: 12.3.8
title: Increment/Decrement Operators
pagenum: 322; label: 12.3.9
title: Expressions with Multiple Operators
pagenum: 324; label: 12.4
title: Problem Solving Using Operators
pagenum: 324; label: 12.5
title: Tying It All Together
pagenum: 326; label: 12.5.1
title: Symbol Table
pagenum: 326; label: 12.5.2
title: Allocating Space for Variables
pagenum: 328; label: 12.5.3
title: A Comprehensive Example
pagenum: 331; label: 12.6
title: Additional Topics
pagenum: 332; label: 12.6.1
title: Variations of the Three Basic Types
pagenum: 332; label: 12.6.2
title: Literals, Constants, and Symbolic Values
pagenum: 334; label: 12.6.3
title: Storage Class
pagenum: 335; label: 12.6.4
title: Additional C Operators
pagenum: 336; label: 12.7
title: Summary
pagenum: 337; title: Exercises
pagenum: 338; label: 13
title: Control Structures
pagenum: 343; label: 13.1
title: Introduction
pagenum: 343; label: 13.2
title: Conditional Constructs
pagenum: 344; label: 13.2.1
title: The if Statement
pagenum: 344; label: 13.2.2
title: The if-else Statement
pagenum: 347; label: 13.3
title: Iteration Constructs
pagenum: 350; label: 13.3.1
title: The while Statement
pagenum: 350; label: 13.3.2
title: The for Statement
pagenum: 353; label: 13.3.3
title: The do-while Statement
pagenum: 358; label: 13.4
title: Problem Solving Using Control Structures
pagenum: 359; label: 13.4.1
title: Problem 1: Approximating the Value of π
pagenum: 360; label: 13.4.2
title: Problem 2: Finding Prime Numbers Less than 100
pagenum: 362; label: 13.4.3
title: Problem 3: Analyzing an E-mail Address
pagenum: 366; label: 13.5
title: Additional C Control Structures
pagenum: 368; label: 13.5.1
title: The switch Statement
pagenum: 368; label: 13.5.2
title: The break and continue Statements
pagenum: 370; label: 13.5.3
title: An Example: Simple Calculator
pagenum: 370; label: 13.6
title: Summary
pagenum: 372; title: Exercises
pagenum: 372; label: 14
title: Functions
pagenum: 379; label: 14.1
title: Introduction
pagenum: 379; label: 14.2
title: Functions in C
pagenum: 380; label: 14.2.1
title: A Function with a Parameter
pagenum: 380; label: 14.2.2
title: Example: Area of a Ring
pagenum: 384; label: 14.3
title: Implementing Functions in C
pagenum: 385; label: 14.3.1
title: Run-Time Stack
pagenum: 385; label: 14.3.2
title: Getting It All to Work
pagenum: 388; label: 14.3.3
title: Tying It All Together
pagenum: 393; label: 14.4
title: Problem Solving Using Functions
pagenum: 394; label: 14.4.1
title: Problem 1: Case Conversion
pagenum: 395; label: 14.4.2
title: Problem 2: Pythagorean Triples
pagenum: 397; label: 14.5
title: Summary
pagenum: 398; title: Exercises
pagenum: 399; label: 15
title: Testing and Debugging
pagenum: 407; label: 15.1
title: Introduction
pagenum: 407; label: 15.2
title: Types of Errors
pagenum: 408; label: 15.2.1
title: Syntactic Errors
pagenum: 409; label: 15.2.2
title: Semantic Errors
pagenum: 409; label: 15.2.3
title: Algorithmic Errors
pagenum: 411; label: 15.3
title: Testing
pagenum: 412; label: 15.3.1
title: Black-Box Testing
pagenum: 412; label: 15.3.2
title: White-Box Testing
pagenum: 413; label: 15.4
title: Debugging
pagenum: 414; label: 15.4.1
title: Ad Hoc Techniques
pagenum: 414; label: 15.4.2
title: Source-Level Debuggers
pagenum: 415; label: 15.5
title: Programming for Correctness
pagenum: 417; label: 15.5.1
title: Nailing Down the Specification
pagenum: 417; label: 15.5.2
title: Modular Design
pagenum: 418; label: 15.5.3
title: Defensive Programming
pagenum: 418; label: 15.6
title: Summary
pagenum: 419; title: Exercises
pagenum: 421; label: 16
title: Pointers and Arrays
pagenum: 427; label: 16.1
title: Introduction
pagenum: 427; label: 16.2
title: Pointers
pagenum: 428; label: 16.2.1
title: Declaring Pointer Variables
pagenum: 429; label: 16.2.2
title: Pointer Operators
pagenum: 430; label: 16.2.3
title: Passing a Reference Using Pointers
pagenum: 432; label: 16.2.4
title: Null Pointers
pagenum: 433; label: 16.2.5
title: Demystifying the Syntax
pagenum: 434; label: 16.2.6
title: An Example Problem Involving Pointers
pagenum: 434; label: 16.3
title: Arrays
pagenum: 436; label: 16.3.1
title: Declaring and Using Arrays
pagenum: 436; label: 16.3.2
title: Examples Using Arrays
pagenum: 438; label: 16.3.3
title: Arrays as Parameters
pagenum: 440; label: 16.3.4
title: Strings in C
pagenum: 441; label: 16.3.5
title: The Relationship Between Arrays and Pointers in C
pagenum: 446; label: 16.3.6
title: Problem Solving: Insertion Sort
pagenum: 446; label: 16.3.7
title: Common Pitfalls with Arrays in C
pagenum: 449; label: 16.4
title: Summary
pagenum: 451; title: Exercises
pagenum: 451; label: 17
title: Recursion
pagenum: 457; label: 17.1
title: Introduction
pagenum: 457; label: 17.2
title: What Is Recursion?
pagenum: 458; label: 17.3
title: Recursion versus Iteration
pagenum: 459; label: 17.4
title: Towers of Hanoi
pagenum: 460; label: 17.5
title: Fibonacci Numbers
pagenum: 464; label: 17.6
title: Binary Search
pagenum: 468; label: 17.7
title: Integer to ASCII
pagenum: 471; label: 17.8
title: Summary
pagenum: 473; title: Exercises
pagenum: 473; label: 18
title: I/O in C
pagenum: 481; label: 18.1
title: Introduction
pagenum: 481; label: 18.2
title: The C Standard Library
pagenum: 481; label: 18.3
title: I/O, One Character at a Time
pagenum: 482; label: 18.3.1
title: I/O Streams
pagenum: 482; label: 18.3.2
title: putchar
pagenum: 483; label: 18.3.3
title: getchar
pagenum: 483; label: 18.3.4
title: Buffered I/O
pagenum: 483; label: 18.4
title: Formatted I/O
pagenum: 485; label: 18.4.1
title: printf
pagenum: 485; label: 18.4.2
title: scanf
pagenum: 487; label: 18.4.3
title: Variable Argument Lists
pagenum: 489; label: 18.5
title: I/O from Files
pagenum: 491; label: 18.6
title: Summary
pagenum: 493; title: Exercises
pagenum: 494; label: 19
title: Data Structures
pagenum: 497; label: 19.1
title: Introduction
pagenum: 497; label: 19.2
title: Structures
pagenum: 498; label: 19.2.1
title: typedef
pagenum: 500; label: 19.2.2
title: Implementing Structures in C
pagenum: 501; label: 19.3
title: Arrays of Structures
pagenum: 502; label: 19.4
title: Dynamic Memory Allocation
pagenum: 504; label: 19.4.1
title: Dynamically Sized Arrays
pagenum: 506; label: 19.5
title: Linked Lists
pagenum: 508; label: 19.5.1
title: An Example
pagenum: 510; label: 19.6
title: Summary
pagenum: 516; title: Exercises
pagenum: 517; label: A
title: The LC-3 ISA
pagenum: 521; label: A.1
title: Overview
pagenum: 521; label: A.2
title: Notation
pagenum: 523; label: A.3
title: The Instruction Set
pagenum: 523; label: A.4
title: Interrupt and Exception Processing
pagenum: 543; label: A.4.1
title: Interrupts
pagenum: 543; label: A.4.2
title: Exceptions
pagenum: 544; label: B
title: From LC-3 to x86
pagenum: 547; label: B.1
title: LC-3 Features and Corresponding x86 Features
pagenum: 548; label: B.1.1
title: Instruction Set
pagenum: 548; label: B.1.2
title: Memory
pagenum: 553; label: B.1.3
title: Internal State
pagenum: 553; label: B.2
title: The Format and Specification of x86 Instructions
pagenum: 557; label: B.2.1
title: Prefix
pagenum: 558; label: B.2.2
title: Opcode
pagenum: 559; label: B.2.3
title: ModR/M Byte
pagenum: 559; label: B.2.4
title: SIB Byte
pagenum: 560; label: B.2.5
title: Displacement
pagenum: 560; label: B.2.6
title: Immediate
pagenum: 560; label: B.3
title: An Example
pagenum: 562; label: C
title: The Microarchitecture of the LC-3
pagenum: 565; label: C.1
title: Overview
pagenum: 565; label: C.2
title: The State Machine
pagenum: 567; label: C.3
title: The Data Path
pagenum: 569; label: C.4
title: The Control Structure
pagenum: 569; label: C.5
title: Memory-Mapped I/O
pagenum: 575; label: C.6
title: Interrupt and Exception Control
pagenum: 576; label: C.6.1
title: Initiating an Interrupt
pagenum: 579; label: C.6.2
title: Returning from an Interrupt, RTI
pagenum: 581; label: C.6.3
title: The Illegal Opcode Exception
pagenum: 582; label: C.7
title: Control Store
pagenum: 583; label: D
title: The C Programming Language
pagenum: 585; label: D.1
title: Overview
pagenum: 585; label: D.2
title: C Conventions
pagenum: 585; label: D.2.1
title: Source Files
pagenum: 585; label: D.2.2
title: Header Files
pagenum: 585; label: D.2.3
title: Comments
pagenum: 586; label: D.2.4
title: Literals
pagenum: 586; label: D.2.5
title: Formatting
pagenum: 588; label: D.2.6
title: Keywords
pagenum: 588; label: D.3
title: Types
pagenum: 589; label: D.3.1
title: Basic Data Types
pagenum: 589; label: D.3.2
title: Type Qualifiers
pagenum: 590; label: D.3.3
title: Storage Class
pagenum: 591; label: D.3.4
title: Derived Types
pagenum: 592; label: D.3.5
title: typedef
pagenum: 594; label: D.4
title: Declarations
pagenum: 595; label: D.4.1
title: Variable Declarations
pagenum: 595; label: D.4.2
title: Function Declarations
pagenum: 596; label: D.5
title: Operators
pagenum: 596; label: D.5.1
title: Assignment Operators
pagenum: 597; label: D.5.2
title: Arithmetic Operators
pagenum: 597; label: D.5.3
title: Bit-wise Operators
pagenum: 598; label: D.5.4
title: Logical Operators
pagenum: 598; label: D.5.5
title: Relational Operators
pagenum: 599; label: D.5.6
title: Increment/Decrement Operators
pagenum: 599; label: D.5.7
title: Conditional Expression
pagenum: 600; label: D.5.8
title: Pointer, Array, and Structure Operators
pagenum: 600; label: D.5.9
title: sizeof
pagenum: 601; label: D.5.10
title: Order of Evaluation
pagenum: 602; label: D.5.11
title: Type Conversions
pagenum: 602; label: D.6
title: Expressions and Statements
pagenum: 603; label: D.6.1
title: Expressions
pagenum: 603; label: D.6.2
title: Statements
pagenum: 604; label: D.7
title: Control
pagenum: 604; label: D.7.1
title: If
pagenum: 604; label: D.7.2
title: If-else
pagenum: 605; label: D.7.3
title: Switch
pagenum: 605; label: D.7.4
title: While
pagenum: 606; label: D.7.5
title: For
pagenum: 607; label: D.7.6
title: Do-while
pagenum: 607; label: D.7.7
title: Break
pagenum: 608; label: D.7.8
title: Continue
pagenum: 608; label: D.7.9
title: return
pagenum: 609; label: D.8
title: The C Preprocessor
pagenum: 609; label: D.8.1
title: Macro Substitution
pagenum: 609; label: D.8.2
title: File Inclusion
pagenum: 610; label: D.9
title: Some Standard Library Functions
pagenum: 610; label: D.9.1
title: I/O Functions
pagenum: 611; label: D.9.2
title: String Functions
pagenum: 612; label: D.9.3
title: Math Functions
pagenum: 613; label: D.9.4
title: Utility Functions
pagenum: 613; label: E
title: Useful Tables
pagenum: 615; label: E.1
title: Commonly Used Numerical Prefixes
pagenum: 615; label: E.2
title: Standard ASCII Codes
pagenum: 616; label: E.3
title: Powers of 2
pagenum: 617; label: F
title: Solutions to Selected Exercises
pagenum: 619