Programming Language Pragmatics
Contributors: Barbara Ryder
Edition: 3 edition
Publisher: Morgan Kaufmann
Published: March 27, 2009
Format: Paperback
Number of pages: 942
ISBN-13: 9780123745149
Subjects: Programming languages; Computers - Languages / Programming; Computers; Computer Books: General; Programming Languages - General; Computers / Programming Languages / General; Computer Architecture - General; Programming languages (Electronic computers)
Notes: Third Edition
Table of contents: label: I
pagenum: 3
title: Foundations; label: 1
pagenum: 5
title: Introduction; label: 1.1
pagenum: 7
title: The Art of Language Design; label: 1.2
pagenum: 10
title: The Programming Language Spectrum; label: 1.3
pagenum: 14
title: Why Study Programming Languages?; label: 1.4
pagenum: 16
title: Compilation and Interpretation; label: 1.5
pagenum: 24
title: Programming Environments; label: 1.6
pagenum: 25
title: An Overview of Compilation; label: 1.6.1
pagenum: 27
title: Lexical and Syntax Analysis; label: 1.6.2
pagenum: 29
title: Semantic Analysis and Intermediate Code Generation; label: 1.6.3
pagenum: 33
title: Target Code Generation; label: 1.6.4
pagenum: 33
title: Code Improvement; label: 1.7
pagenum: 35
title: Summary and Concluding Remarks; label: 1.8
pagenum: 36
title: Exercises; label: 1.9
pagenum: 37
title: Explorations; label: 1.10
pagenum: 39
title: Bibliographic Notes; label: 2
pagenum: 41
title: Programming Language Syntax; label: 2.1
pagenum: 42
title: Specifying Syntax; label: 2.1.1
pagenum: 43
title: Tokens and Regular Expressions; label: 2.1.2
pagenum: 46
title: Context-Free Grammars; label: 2.1.3
pagenum: 48
title: Derivations and Parse Trees; label: 2.2
pagenum: 51
title: Scanning; label: 2.2.1
pagenum: 55
title: Generating a Finite Automaton; label: 2.2.2
pagenum: 60
title: Scanner Code; label: 2.2.3
pagenum: 63
title: Table-Driven Scanning; label: 2.2.4
pagenum: 63
title: Lexical Errors; label: 2.2.5
pagenum: 65
title: Pragmas; label: 2.3
pagenum: 67
title: Parsing; label: 2.3.1
pagenum: 70
title: Recursive Descent; label: 2.3.2
pagenum: 76
title: Table-Driven Top-Down Parsing; label: 2.3.3
pagenum: 87
title: Bottom-Up Parsing; label: 2.3.4
pagenum: 99
title: Syntax Errors; label: 2.4
pagenum: 100
title: Theoretical Foundations; title: Finite Automata
label: 2.4.1; title: Push-Down Automata
label: 2.4.2; title: Grammar and Language Classes
label: 2.4.3; label: 2.5
pagenum: 101
title: Summary and Concluding Remarks; label: 2.6
pagenum: 102
title: Exercises; label: 2.7
pagenum: 108
title: Explorations; label: 2.8
pagenum: 109
title: Bibliographic Notes; label: 3
pagenum: 111
title: Names, Scopes, and Bindings; label: 3.1
pagenum: 112
title: The Notion of Binding Time; label: 3.2
pagenum: 114
title: Object Lifetime and Storage Management; label: 3.2.1
pagenum: 115
title: Static Allocation; label: 3.2.2
pagenum: 117
title: Stack-Based Allocation; label: 3.2.3
pagenum: 118
title: Heap-Based Allocation; label: 3.2.4
pagenum: 120
title: Garbage Collection; label: 3.3
pagenum: 121
title: Scope Rules; label: 3.3.1
pagenum: 123
title: Static Scoping; label: 3.3.2
pagenum: 124
title: Nested Subroutines; label: 3.3.3
pagenum: 127
title: Declaration Order; label: 3.3.4
pagenum: 132
title: Modules; label: 3.3.5
pagenum: 136
title: Module Types and Classes; label: 3.3.6
pagenum: 139
title: Dynamic Scoping; label: 3.4
pagenum: 143
title: Implementing Scope; title: Symbol Tables
label: 3.4.1; title: Association Lists and Central Reference Tables
label: 3.4.2; label: 3.5
pagenum: 144
title: The Meaning of Names Within a Scope; label: 3.5.1
pagenum: 144
title: Aliases; label: 3.5.2
pagenum: 146
title: Overloading; label: 3.5.3
pagenum: 148
title: Polymorphism and Related Concepts; label: 3.6
pagenum: 151
title: The Binding of Referencing Environments; label: 3.6.1
pagenum: 153
title: Subroutine Closures; label: 3.6.2
pagenum: 154
title: First-Class Values and Unlimited Extent; label: 3.6.3
pagenum: 157
title: Object Closures; label: 3.7
pagenum: 159
title: Macro Expansion; label: 3.8
pagenum: 161
title: Separate Compilation; title: Separate Compilation in C
label: 3.8.1; title: Packages and Automatic Header Inference
label: 3.8.2; title: Module Hierarchies
label: 3.8.3; label: 3.9
pagenum: 162
title: Summary and Concluding Remarks; label: 3.10
pagenum: 163
title: Exercises; label: 3.11
pagenum: 171
title: Explorations; label: 3.12
pagenum: 172
title: Bibliographic Notes; label: 4
pagenum: 175
title: Semantic Analysis; label: 4.1
pagenum: 176
title: The Role of the Semantic Analyzer; label: 4.2
pagenum: 180
title: Attribute Grammars; label: 4.3
pagenum: 182
title: Evaluating Attributes; label: 4.4
pagenum: 191
title: Action Routines; label: 4.5
pagenum: 196
title: Space Management for Attributes; title: Bottom-Up Evaluation
label: 4.5.1; title: Top-Down Evaluation
label: 4.5.2; label: 4.6
pagenum: 197
title: Decorating a Syntax Tree; label: 4.7
pagenum: 204
title: Summary and Concluding Remarks; label: 4.8
pagenum: 205
title: Exercises; label: 4.9
pagenum: 209
title: Explorations; label: 4.10
pagenum: 210
title: Bibliographic Notes; label: 5
pagenum: 213
title: Target Machine Architecture; title: The Memory Hierarchy
label: 5.1; title: Data Representation
label: 5.2; title: Integer Arithmetic
label: 5.2.1; title: Floating-Point Arithmetic
label: 5.2.2; title: Instruction Set Architecture
label: 5.3; title: Addressing Modes
label: 5.3.1; title: Conditions and Branches
label: 5.3.2; title: Architecture and Implementation
label: 5.4; title: Microprogramming
label: 5.4.1; title: Microprocessors
label: 5.4.2; title: RISC
label: 5.4.3; title: Multithreading and Multicore
label: 5.4.4; title: Two Example Architectures: The x86 and MIPS
label: 5.4.5; title: Compiling for Modern Processors
label: 5.5; title: Keeping the Pipeline Full
label: 5.5.1; title: Register Allocation
label: 5.5.2; title: Summary and Concluding Remarks
label: 5.6; title: Exercises
label: 5.7; title: Explorations
label: 5.8; title: Bibliographic Notes
label: 5.9; label: II
pagenum: 217
title: Core Issues in Language Design; label: 6
pagenum: 219
title: Control Flow; label: 6.1
pagenum: 220
title: Expression Evaluation; label: 6.1.1
pagenum: 222
title: Precedence and Associativity; label: 6.1.2
pagenum: 224
title: Assignments; label: 6.1.3
pagenum: 233
title: Initialization; label: 6.1.4
pagenum: 235
title: Ordering Within Expressions; label: 6.1.5
pagenum: 238
title: Short-Circuit Evaluation; label: 6.2
pagenum: 241
title: Structured and Unstructured Flow; label: 6.2.1
pagenum: 242
title: Structured Alternatives to goto; label: 6.2.2
pagenum: 245
title: Continuations; label: 6.3
pagenum: 246
title: Sequencing; label: 6.4
pagenum: 247
title: Selection; label: 6.4.1
pagenum: 248
title: Short-Circuited Conditions; label: 6.4.2
pagenum: 251
title: Case/Switch Statements; label: 6.5
pagenum: 256
title: Iteration; label: 6.5.1
pagenum: 256
title: Enumeration-Controlled Loops; label: 6.5.2
pagenum: 261
title: Combination Loops; label: 6.5.3
pagenum: 262
title: Iterators; label: 6.5.4
pagenum: 268
title: Generators in Icon; label: 6.5.5
pagenum: 268
title: Logically Controlled Loops; label: 6.6
pagenum: 270
title: Recursion; label: 6.6.1
pagenum: 271
title: Iteration and Recursion; label: 6.6.2
pagenum: 275
title: Applicative- and Normal-Order Evaluation; label: 6.7
pagenum: 277
title: Nondeterminacy; label: 6.8
pagenum: 278
title: Summary and Concluding Remarks; label: 6.9
pagenum: 279
title: Exercises; label: 6.10
pagenum: 285
title: Explorations; label: 6.11
pagenum: 287
title: Bibliographic Notes; label: 7
pagenum: 289
title: Data Types; label: 7.1
pagenum: 290
title: Type Systems; label: 7.1.1
pagenum: 291
title: Type Checking; label: 7.1.2
pagenum: 291
title: Polymorphism; label: 7.1.3
pagenum: 293
title: The Meaning of “Type”; label: 7.1.4
pagenum: 294
title: Classification of Types; label: 7.1.5
pagenum: 301
title: Orthogonality; label: 7.2
pagenum: 303
title: Type Checking; label: 7.2.1
pagenum: 303
title: Type Equivalence; label: 7.2.2
pagenum: 310
title: Type Compatibility; label: 7.2.3
pagenum: 314
title: Type Inference; label: 7.2.4
pagenum: 316
title: The ML Type System; label: 7.3
pagenum: 317
title: Records (Structures) and Variants (Unions); label: 7.3.1
pagenum: 318
title: Syntax and Operations; label: 7.3.2
pagenum: 319
title: Memory Layout and Its Impact; label: 7.3.3
pagenum: 323
title: With Statements; label: 7.3.4
pagenum: 324
title: Variant Records (Unions); label: 7.4
pagenum: 325
title: Arrays; label: 7.4.1
pagenum: 326
title: Syntax and Operations; label: 7.4.2
pagenum: 330
title: Dimensions, Bounds, and Allocation; label: 7.4.3
pagenum: 335
title: Memory Layout; label: 7.5
pagenum: 342
title: Strings; label: 7.6
pagenum: 344
title: Sets; label: 7.7
pagenum: 345
title: Pointers and Recursive Types; label: 7.7.1
pagenum: 346
title: Syntax and Operations; label: 7.7.2
pagenum: 356
title: Dangling References; label: 7.7.3
pagenum: 357
title: Garbage Collection; label: 7.8
pagenum: 364
title: Lists; label: 7.9
pagenum: 367
title: Files and Input/Output; title: Interactive I/O
label: 7.9.1; title: File-Based I/O
label: 7.9.2; title: Text I/O
label: 7.9.3; label: 7.10
pagenum: 368
title: Equality Testing and Assignment; label: 7.11
pagenum: 371
title: Summary and Concluding Remarks; label: 7.12
pagenum: 373
title: Exercises; label: 7.13
pagenum: 379
title: Explorations; label: 7.14
pagenum: 380
title: Bibliographic Notes; label: 8
pagenum: 383
title: Subroutines and Control Abstraction; label: 8.1
pagenum: 384
title: Review of Stack Layout; label: 8.2
pagenum: 386
title: Calling Sequences; label: 8.2.1
pagenum: 389
title: Displays; label: 8.2.2
pagenum: 389
title: Case Studies: C on the MIPS; Pascal on the x86; label: 8.2.3
pagenum: 390
title: Register Windows; label: 8.2.4
pagenum: 391
title: In-Line Expansion; label: 8.3
pagenum: 393
title: Parameter Passing; label: 8.3.1
pagenum: 394
title: Parameter Modes; label: 8.3.2
pagenum: 402
title: Call by Name; label: 8.3.3
pagenum: 403
title: Special Purpose Parameters; label: 8.3.4
pagenum: 408
title: Function Returns; label: 8.4
pagenum: 410
title: Generic Subroutines and Modules; label: 8.4.1
pagenum: 412
title: Implementation Options; label: 8.4.2
pagenum: 414
title: Generic Parameter Constraints; label: 8.4.3
pagenum: 416
title: Implicit Instantiation; label: 8.4.4
pagenum: 417
title: Generics in C++, Java, and C#; label: 8.5
pagenum: 418
title: Exception Handling; label: 8.5.1
pagenum: 421
title: Defining Exceptions; label: 8.5.2
pagenum: 423
title: Exception Propagation; label: 8.5.3
pagenum: 425
title: Implementation of Exceptions; label: 8.6
pagenum: 428
title: Coroutines; label: 8.6.1
pagenum: 430
title: Stack Allocation; label: 8.6.2
pagenum: 432
title: Transfer; label: 8.6.3
pagenum: 433
title: Implementation of Iterators; label: 8.6.4
pagenum: 433
title: Discrete Event Simulation; label: 8.7
pagenum: 434
title: Events; label: 8.7.1
pagenum: 434
title: Sequential Handlers; label: 8.7.2
pagenum: 436
title: Thread-Based Handlers; label: 8.8
pagenum: 438
title: Summary and Concluding Remarks; label: 8.9
pagenum: 439
title: Exercises; label: 8.10
pagenum: 446
title: Explorations; label: 8.11
pagenum: 447
title: Bibliographic Notes; label: 9
pagenum: 449
title: Data Abstraction and Object Orientation; label: 9.1
pagenum: 451
title: Object-Oriented Programming; label: 9.2
pagenum: 460
title: Encapsulation and Inheritance; label: 9.2.1
pagenum: 460
title: Modules; label: 9.2.2
pagenum: 463
title: Classes; label: 9.2.3
pagenum: 465
title: Nesting (Inner Classes); label: 9.2.4
pagenum: 466
title: Type Extensions; label: 9.2.5
pagenum: 468
title: Extending without Inheritance; label: 9.3
pagenum: 469
title: Initialization and Finalization; label: 9.3.1
pagenum: 470
title: Choosing a Constructor; label: 9.3.2
pagenum: 472
title: References and Values; label: 9.3.3
pagenum: 475
title: Execution Order; label: 9.3.4
pagenum: 477
title: Garbage Collection; label: 9.4
pagenum: 478
title: Dynamic Method Binding; label: 9.4.1
pagenum: 480
title: Virtual and Nonvirtual Methods; label: 9.4.2
pagenum: 482
title: Abstract Classes; label: 9.4.3
pagenum: 482
title: Member Lookup; label: 9.4.4
pagenum: 486
title: Polymorphism; label: 9.4.5
pagenum: 489
title: Object Closures; label: 9.5
pagenum: 491
title: Multiple Inheritance; title: Semantic Ambiguities
label: 9.5.1; title: Replicated Inheritance
label: 9.5.2; title: Shared Inheritance
label: 9.5.3; title: Mix-In Inheritance
label: 9.5.4; label: 9.6
pagenum: 492
title: Object-Oriented Programming Revisited; label: 9.6.1
pagenum: 493
title: The Object Model of Smalltalk; label: 9.7
pagenum: 494
title: Summary and Concluding Remarks; label: 9.8
pagenum: 495
title: Exercises; label: 9.9
pagenum: 498
title: Explorations; label: 9.10
pagenum: 499
title: Bibliographic Notes; label: III
pagenum: 503
title: Alternative Programming Models; label: 10
pagenum: 505
title: Functional Languages; label: 10.1
pagenum: 506
title: Historical Origins; label: 10.2
pagenum: 507
title: Functional Programming Concepts; label: 10.3
pagenum: 509
title: A Review/Overview of Scheme; label: 10.3.1
pagenum: 512
title: Bindings; label: 10.3.2
pagenum: 513
title: Lists and Numbers; label: 10.3.3
pagenum: 514
title: Equality Testing and Searching; label: 10.3.4
pagenum: 515
title: Control Flow and Assignment; label: 10.3.5
pagenum: 517
title: Programs as Lists; label: 10.3.6
pagenum: 519
title: Extended Example: DFA Simulation; label: 10.4
pagenum: 521
title: Evaluation Order Revisited; label: 10.4.1
pagenum: 523
title: Strictness and Lazy Evaluation; label: 10.4.2
pagenum: 525
title: I/O: Streams and Monads; label: 10.5
pagenum: 530
title: Higher-Order Functions; label: 10.6
pagenum: 534
title: Theoretical Foundations; title: Lambda Calculus
label: 10.6.1; title: Control Flow
label: 10.6.2; title: Structures
label: 10.6.3; label: 10.7
pagenum: 534
title: Functional Programming in Perspective; label: 10.8
pagenum: 537
title: Summary and Concluding Remarks; label: 10.9
pagenum: 538
title: Exercises; label: 10.10
pagenum: 542
title: Explorations; label: 10.11
pagenum: 543
title: Bibliographic Notes; label: 11
pagenum: 545
title: Logic Languages; label: 11.1
pagenum: 546
title: Logic Programming Concepts; label: 11.2
pagenum: 547
title: Prolog; label: 11.2.1
pagenum: 549
title: Resolution and Unification; label: 11.2.2
pagenum: 550
title: Lists; label: 11.2.3
pagenum: 551
title: Arithmetic; label: 11.2.4
pagenum: 552
title: Search/Execution Order; label: 11.2.5
pagenum: 554
title: Extended Example: Tic-Tac-Toe; label: 11.2.6
pagenum: 557
title: Imperative Control Flow; label: 11.2.7
pagenum: 561
title: Database Manipulation; label: 11.3
pagenum: 566
title: Theoretical Foundations; title: Clausal Form
label: 11.3.1; title: Limitations
label: 11.3.2; title: Skolemization
label: 11.3.3; label: 11.4
pagenum: 566
title: Logic Programming in Perspective; label: 11.4.1
pagenum: 566
title: Parts of Logic Not Covered; label: 11.4.2
pagenum: 567
title: Execution Order; label: 11.4.3
pagenum: 568
title: Negation and the “Closed World” Assumption; label: 11.5
pagenum: 570
title: Summary and Concluding Remarks; label: 11.6
pagenum: 571
title: Exercises; label: 11.7
pagenum: 573
title: Explorations; label: 11.8
pagenum: 573
title: Bibliographic Notes; label: 12
pagenum: 575
title: Concurrency; label: 12.1
pagenum: 576
title: Background and Motivation; label: 12.1.1
pagenum: 579
title: The Case for Multithreaded Programs; label: 12.1.2
pagenum: 581
title: Multiprocessor Architecture; label: 12.2
pagenum: 586
title: Concurrent Programming Fundamentals; label: 12.2.1
pagenum: 587
title: Communication and Synchronization; label: 12.2.2
pagenum: 588
title: Languages and Libraries; label: 12.2.3
pagenum: 589
title: Thread Creation Syntax; label: 12.2.4
pagenum: 598
title: Implementation of Threads; label: 12.3
pagenum: 603
title: Implementing Synchronization; label: 12.3.1
pagenum: 604
title: Busy-Wait Synchronization; label: 12.3.2
pagenum: 607
title: Nonblocking Algorithms; label: 12.3.3
pagenum: 610
title: Memory Consistency Models; label: 12.3.4
pagenum: 613
title: Scheduler Implementation; label: 12.3.5
pagenum: 617
title: Semaphores; label: 12.4
pagenum: 619
title: Language-Level Mechanisms; label: 12.4.1
pagenum: 619
title: Monitors; label: 12.4.2
pagenum: 624
title: Conditional Critical Regions; label: 12.4.3
pagenum: 626
title: Synchronization in Java; label: 12.4.4
pagenum: 629
title: Transactional Memory; label: 12.4.5
pagenum: 633
title: Implicit Synchronization; label: 12.5
pagenum: 637
title: Message Passing; title: Naming Communication Partners
label: 12.5.1; title: Sending
label: 12.5.2; title: Receiving
label: 12.5.3; title: Remote Procedure Call
label: 12.5.4; label: 12.6
pagenum: 638
title: Summary and Concluding Remarks; label: 12.7
pagenum: 640
title: Exercises; label: 12.8
pagenum: 645
title: Explorations; label: 12.9
pagenum: 647
title: Bibliographic Notes; label: 13
pagenum: 649
title: Scripting Languages; label: 13.1
pagenum: 650
title: What Is a Scripting Language?; label: 13.1.1
pagenum: 652
title: Common Characteristics; label: 13.2
pagenum: 655
title: Problem Domains; label: 13.2.1
pagenum: 655
title: Shell (Command) Languages; label: 13.2.2
pagenum: 663
title: Text Processing and Report Generation; label: 13.2.3
pagenum: 667
title: Mathematics and Statistics; label: 13.2.4
pagenum: 668
title: “Glue” Languages and General Purpose Scripting; label: 13.2.5
pagenum: 676
title: Extension Languages; label: 13.3
pagenum: 680
title: Scripting the World Wide Web; label: 13.3.1
pagenum: 680
title: CGI Scripts; label: 13.3.2
pagenum: 681
title: Embedded Server-Side Scripts; label: 13.3.3
pagenum: 686
title: Client-Side Scripts; label: 13.3.4
pagenum: 686
title: Java Applets; label: 13.3.5
pagenum: 689
title: XSLT; label: 13.4
pagenum: 691
title: Innovative Features; label: 13.4.1
pagenum: 691
title: Names and Scopes; label: 13.4.2
pagenum: 696
title: String and Pattern Manipulation; label: 13.4.3
pagenum: 704
title: Data Types; label: 13.4.4
pagenum: 710
title: Object Orientation; label: 13.5
pagenum: 717
title: Summary and Concluding Remarks; label: 13.6
pagenum: 718
title: Exercises; label: 13.7
pagenum: 723
title: Explorations; label: 13.8
pagenum: 724
title: Bibliographic Notes; label: IV
pagenum: 727
title: A Closer Look at Implementation; label: 14
pagenum: 729
title: Building a Runnable Program; label: 14.1
pagenum: 729
title: Back-End Compiler Structure; label: 14.1.1
pagenum: 730
title: A Plausible Set of Phases; label: 14.1.2
pagenum: 734
title: Phases and Passes; label: 14.2
pagenum: 734
title: Intermediate Forms; title: Diana
label: 14.2.1; title: The gcc IFs
label: 14.2.2; label: 14.2.3
pagenum: 736
title: Stack-Based Intermediate Forms; label: 14.3
pagenum: 738
title: Code Generation; label: 14.3.1
pagenum: 738
title: An Attribute Grammar Example; label: 14.3.2
pagenum: 741
title: Register Allocation; label: 14.4
pagenum: 744
title: Address Space Organization; label: 14.5
pagenum: 746
title: Assembly; label: 14.5.1
pagenum: 748
title: Emitting Instructions; label: 14.5.2
pagenum: 749
title: Assigning Addresses to Names; label: 14.6
pagenum: 750
title: Linking; label: 14.6.1
pagenum: 751
title: Relocation and Name Resolution; label: 14.6.2
pagenum: 751
title: Type Checking; label: 14.7
pagenum: 754
title: Dynamic Linking; title: Position-Independent Code
label: 14.7.1; title: Fully Dynamic (Lazy) Linking
label: 14.7.2; label: 14.8
pagenum: 755
title: Summary and Concluding Remarks; label: 14.9
pagenum: 756
title: Exercises; label: 14.10
pagenum: 758
title: Explorations; label: 14.11
pagenum: 759
title: Bibliographic Notes; label: 15
pagenum: 761
title: Run-time Program Management; label: 15.1
pagenum: 764
title: Virtual Machines; label: 15.1.1
pagenum: 766
title: The Java Virtual Machine; label: 15.1.2
pagenum: 775
title: The Common Language Infrastructure; label: 15.2
pagenum: 784
title: Late Binding of Machine Code; label: 15.2.1
pagenum: 785
title: Just-in-Time and Dynamic Compilation; label: 15.2.2
pagenum: 791
title: Binary Translation; label: 15.2.3
pagenum: 795
title: Binary Rewriting; label: 15.2.4
pagenum: 797
title: Mobile Code and Sandboxing; label: 15.3
pagenum: 799
title: Inspection/Introspection; label: 15.3.1
pagenum: 799
title: Reflection; label: 15.3.2
pagenum: 806
title: Symbolic Debugging; label: 15.3.3
pagenum: 809
title: Performance Analysis; label: 15.4
pagenum: 811
title: Summary and Concluding Remarks; label: 15.5
pagenum: 812
title: Exercises; label: 15.6
pagenum: 815
title: Explorations; label: 15.7
pagenum: 816
title: Bibliographic Notes; label: 16
pagenum: 817
title: Code Improvement; title: Phases of Code Improvement
label: 16.1; title: Peephole Optimization
label: 16.2; title: Redundancy Elimination in Basic Blocks
label: 16.3; title: A Running Example
label: 16.3.1; title: Value Numbering
label: 16.3.2; title: Global Redundancy and Data Flow Analysis
label: 16.4; title: SSA Form and Global Value Numbering
label: 16.4.1; title: Global Common Subexpression Elimination
label: 16.4.2; title: Loop Improvement I
label: 16.5; title: Loop Invariants
label: 16.5.1; title: Induction Variables
label: 16.5.2; title: Instruction Scheduling
label: 16.6; title: Loop Improvement II
label: 16.7; title: Loop Unrolling and Software Pipelining
label: 16.7.1; title: Loop Reordering
label: 16.7.2; title: Register Allocation
label: 16.8; title: Summary and Concluding Remarks
label: 16.9; title: Bibliographic Notes
label: 16.10; label: A
pagenum: 819
title: Programming Languages Mentioned; label: B
pagenum: 831
title: Language Design and Language Implementation; label: C
pagenum: 835
title: Numbered Examples; title: Bibliography
pagenum: 849; title: Index
pagenum: 867