Compiler Design

  1. Code Generation
    1. Code Generation Overview
      1. Target Code Forms
        1. Code Generation Phases
          1. Quality Metrics
          2. Target Machine Considerations
            1. Instruction Set Architecture
              1. RISC vs CISC
                1. Addressing Modes
                  1. Instruction Formats
                  2. Register Architecture
                    1. Register Types
                      1. Register Allocation Constraints
                        1. Calling Conventions
                        2. Memory Hierarchy
                          1. Cache Considerations
                            1. Memory Access Patterns
                          2. Instruction Selection
                            1. Tree Pattern Matching
                              1. Dynamic Programming Approach
                                1. Greedy Algorithms
                                  1. Cost Models
                                    1. Instruction Selection Tools
                                    2. Register Allocation
                                      1. Register Allocation Problem
                                        1. Live Range Analysis
                                          1. Interference Graph Construction
                                            1. Graph Coloring Algorithm
                                              1. Register Spilling
                                                1. Coalescing
                                                  1. Pre-colored Nodes
                                                  2. Instruction Scheduling
                                                    1. Scheduling Objectives
                                                      1. Dependence Constraints
                                                        1. Resource Constraints
                                                          1. List Scheduling Algorithm
                                                            1. Software Pipelining
                                                              1. Trace Scheduling
                                                              2. Code Generation Algorithms
                                                                1. Simple Code Generation
                                                                  1. Optimal Code Generation
                                                                    1. Code Generation from DAGs
                                                                      1. Code Generation from Trees
                                                                      2. Target Code Optimization
                                                                        1. Peephole Optimization
                                                                          1. Branch Optimization
                                                                            1. Jump Threading
                                                                              1. Tail Call Optimization
                                                                              2. Assembly and Object Code Generation
                                                                                1. Assembly Language Generation
                                                                                  1. Symbol Resolution
                                                                                    1. Relocation Information
                                                                                      1. Object File Formats
                                                                                        1. Debug Information Generation