Electrical FireBibliography |
|
See also the updated version of this page.
Below are some interesting papers relevant to the work we're doing on Electrical Fire. Some key papers are in red (primary) or brown (secondary).
| Compiler Books | |||
| [ACHM82] | Engineering a Compiler: VAX-11 Code Generation and Optimization | Anklam, Cutler, Heinen, MacLaren | 82 |
| [ASU86] | Compilers: Principles, Techniques, and Tools | Aho, Sethi, Ullman | 86 |
| [Ellis86] | Bulldog: A Compiler for VLIW Architectures | Ellis | 86 |
| [Lee89] | Realistic Compiler Generation | Lee | 89 |
| [Holub90] | Compiler Design in C | Holub | 90 |
| [FraHa95] | A Retargetable C Compiler: Design and Implementation | Fraser, Hanson | 95 |
| Integrated Systems | |||
| [EAH96] | A Java ILP Machine Based on Fast Dynamic Compilation | Ebcioglu, Altman, Hokenek (IBM) | IBM Cyberjournal 8310 |
| [EbAlt96] | DAISY: Dynamic Compilation for 100% Architectural Compatibility | Ebcioglu, Altman (IBM) | IBM Cyberjournal 8502 |
| [HooZa96] | Generating Machine Specific Optimizing Compilers | Hoover, Zadeck (IBM) | POPL 96, p. 219 |
| [AGL96] | cmcc: Competitive modular compiler in C++ | Adl-Tabatabai, Gross, Lueh (CMU) | OOPSLA 96, p. 51 |
| [DDGLC96] | Vortex: An Optimizing Compiler for Object-Oriented Languages | Dean, DeFouw, Grove, Litvinov, Chambers (U Washington) | OOPSLA 96, p. 83 |
| [Brandis95] | Optimizing Compilers for Structured Programming Languages | Brandis (Zürich) | PhD thesis 95 |
| [JoMcC] | The RTL System: A Framework for Code Optimization | Johnson, McConnell (U Illinois) | |
| [McCRoSch] | The RTL System | McConnell, Roberts, Schoening (U Illinois) | |
| [FraHa91a] | A Retargetable Compiler for ANSI C | Fraser, Hanson | SIGPLAN Notices 26:10, Oct 91, p. 29 |
| [Horwat88] | A Concurrent Smalltalk Compiler for the Message-Driven Processor | Horwat (MIT) | TR 88 - 1080 |
| [Horwat89] | Concurrent Smalltalk on the Message-Driven Processor | Horwat (MIT) | TR 89 - 1321 |
| Data Structures | |||
| [BriTo93] | An Efficient Representation for Sparse Sets | Briggs, Torczon (Rice) | LOPLAS 2:1, Mar 1993, p. 59 |
| Dataflow Analysis and Intermediate Representations | |||
| Traditional | |||
| [TjiaHe92] | Sharlit -- A tool for building optimizers | Tjiang, Hennessy (Stanford) | PLDI 92, p. 82 |
| [BGS95a] | GURRR: A Global Unified Resource Requirements Representation | Berson, Gupta, Soffa | IR 95, p. 23 |
| [Tjiang93] | Automatic Generation of Data-Flow Analyzers: A Tool for Building Optimizers | Tjiang | PhD thesis 93 |
| [DRZ92] | How to Analyze Large Programs Efficiently and Informatively | Dhamdhere, Rosen, Zadeck | PLDI 92, p. 212 |
| [MaRy90] | An Efficient Hybrid Algorithm for Incremental Data Flow Analysis | Marlowe, Ryder (Rutgers) | POPL 90, p. 184 |
| [JaiTho88] | An Efficient Approach to Data Flow Analysis in a Multiple Pass Global Optimizer | Jain, Thompson (HP) | PLDI 88, p. 154 |
| Program Dependence Graphs | |||
| [BaMa92] | Program Dependence Graphs for the Rest of Us | Ballance, Maccabe (U New Mexico) | TR 92-10 |
| [WCES94] | Value Dependence Graphs: Representation Without Taxation | Weise, Crew, Ernst, Steensgaard (Microsoft) | POPL 94, p. 297 |
| [Ruf95] | Optimizing Sparse Representations for Dataflow Analysis | Ruf (Microsoft) | IR 95, p. 50 |
| Static Single Assignment: Basics | |||
| [LeTa79] | A Fast Algorithm for Finding Dominators in a Flowgraph | Lengauer, Tarjan (Stanford) | TOPLAS 1:1, Jul 79, p. 121 |
| [CFRWZ89] | An Efficient Method of Computing Static Single Assignment Form | Cytron, Ferrante, Rosen, Wegman, Zadeck (IBM) | POPL 89, p. 25 |
| [CFRWZ91] | Efficiently Computing Static Single Assignment Form and the Control Dependence Graph | Cytron, Ferrante, Rosen, Wegman, Zadeck (IBM) | TOPLAS 13:4, Oct 91, p. 451 |
| [CyFe93] | Efficiently Computing phi-Nodes On-The-Fly | Cytron, Ferrante | Langs and Compilers for Parallel Computing 93, p. 461 |
| Static Single Assignment: DJ Graphs | |||
| [SGL95a] | Incremental Computation of Dominator Trees | Sreedhar, Gao, Lee (McGill) | IR 95, p. 1 |
| [SGL96] | A New Framework for Exhaustive and Incremental Data Flow Analysis Using DJ Graphs | Sreedhar, Gao, Lee (McGill) | PLDI 96, p. 278 |
| [SGL95b] | Efficient Data Flow Analysis Using DJ Graphs: Elimination Methods Revisited | Sreedhar, Gao, Lee (McGill) | TR 95-93 |
| [SreeGao95] | A Linear Time Algorithm for Placing phi-Nodes | Sreedhar, Gao (McGill) | POPL 95, p. 62 |
| [Sreedhar95] | Efficient Program Analysis Using DJ Graphs | Sreedhar (McGill) | PhD thesis 95 |
| Static Single Assignment: Other Variants | |||
| [Ramalingam97] | On Sparse Evaluation Representations | Ramalingam (IBM) | Fourth International Static Analysis Symposium 97 |
| [PBJMS91] | Dependence Flow Graphs: An Algebraic Approach to Program Dependencies | Pingali, Beck, Johnson, Moudgill, Stodghill (Cornell) | POPL 91, p. 67 |
| [JPP94] | The Program Structure Tree: Computing Control Regions in Linear Time | Johnson, Pearson, Pingali (Cornell) | PLDI 94, p. 171 |
| [JoPi93] | Dependence-Based Program Analysis | Johnson, Pingali (Cornell) | PLDI 93, p. 78 |
| [CCF91] | Automatic Construction of Sparse Data Flow Evaluation Graphs | Choi, Cytron, Ferrante (IBM) | POPL 91, p. 55 |
| [CliPa95] | A Simple Graph-Based Intermediate Representation | Click, Paleczny | IR 95, p. 35 |
| [TuPa95] | Efficient Building and Placing of Gating Functions | Tu, Padua (U Illinois) | PLDI 95, p. 47 |
| [Havlak93] | Construction of Thinned Gated Single-Assignment Form | Havlak | Langs and Compilers for Parallel Computing 93, p. 477 |
| [GeWoSto] | A Reference Chain Approach for Live Variables | Gerlek, Wolfe, Stoltz (OGI) | |
| [SGW94] | Extended SSA with Factored Use-Def Chains to Support Optimization and Parallelism | Stoltz, Gerlek, Wolfe (OGI) | HICSS 94, p. 43 |
| [BraMö94] | Single-Pass Generation of Static Single-Assignment Form for Structured Languages | Brandis, Mössenböck (Zürich) | TOPLAS 16:6, Nov 94, p. 1684 |
| Optimization | |||
| Constant Propagation | |||
| [WeZa91] | Constant Propagation with Conditional Branches | Wegman, Zadeck (IBM) | TOPLAS 13:2, Apr 91, p. 181 |
| [SWG94] | Constant Propagation: A Fresh Demand-Driven Look | Stoltz, Wolfe, Gerlek (OGI) | SIGAPP 94 |
| Partial Redundancy Elimination | |||
| [AWZ88] | Detecting Equality of Variables in Programs | Alpern, Wegman, Zadeck | POPL 88, p. 1 |
| [RWZ88] | Global Value Numbers and Redundant Computation | Rosen, Wegman, Zadeck | POPL 88, p. 12 |
| [KRS92] | Lazy Code Motion | Knoop, Rüthing, Steffen | PLDI 92, p. 224 |
| [KRS95] | The Power of Assignment Motion | Knoop, Rüthing, Steffen | PLDI 95, p. 233 |
| [Click95a] | Global Code Motion; Global Value Numbering | Click | PLDI 95, p. 246 |
| [CliCoo95] | Combining Analyses, Combining Optimizations | Click, Cooper (Rice) | TOPLAS 17:2, Mar 95, p. 181 |
| [Click95b] | Combining Analyses, Combining Optimizations | Click (Rice) | PhD thesis 95 |
| [Simpson96] | Value-Driven Redundancy Elimination | Simpson (Rice) | PhD Thesis 96 |
| [CCKLLT97] | A New Algorithm for Partial Redundancy Elimination Based on SSA Form | Chow, Chan, Kennedy, Liu, Lo, Tu (SGI) | PLDI 97, p. 273 |
| Range Checking | |||
| [GouKlae96] | Eliminating Range Checks using Static Single Assignment Form | Gough, Klaeren | ACSC 96 |
| [GouKlae94] | Eliminating Range Checks using Static Single Assignment Form | Gough, Klaeren | Tübingen TR 94 |
| [KoWo95] | Elimination of Redundant Array Subscript Range Checks | Kolte, Wolfe | PLDI 95, p. 270 |
| [Gupta90] | A Fresh Look at Optimizing Array Bound Checking | Gupta | PLDI 90, p. 272 |
| General | |||
| [McCJo92] | Using Static Single Assignment Form in a Code Optimizer | McConnell, Johnson (U Illinois) | LOPLAS 1:2, Jun 92, p. 152 |
| [CSV95] | Operator Strength Reduction | Cooper, Simpson, Vick (Rice) | TR95635-S 95 |
| [McConnell93] | Tree-Based Code Optimization | McConnell (U Illinois) | PhD thesis 93 |
| [HHGMLH95] | Compiler Technology for Future Microprocessors | Hwu, Hank, Gallagher, Mahlke, Lavery, Haab, Gyllenhaal, August | Proc. IEEE 83:12, Dec. 95, p. 1625 |
| Synchronization | |||
| [Bacon97] | Featherweight Monitors with Bacon Bits | Bacon (IBM) | |
| Dynamic Dispatching | |||
| [DrieHö95] | Minimizing Row Displacement Dispatch Tables | Driesen, Hölzle (UCSB) | OOPSLA 95, p. 141 |
| [DMSV89] | A Fast Method Dispatcher for Compiled Languages with Multiple Inheritance | Dixon, McKee, Schweizer, Vaughan | OOPSLA 89, p. 211 |
| [ViHo96] | Compact Dispatch Tables for Dynamically Typed Object Oriented Languages | Vitek, Horspool | CC 96, p. 309 |
| [DMM96] | Simple and Effective Analysis of Statically-Typed Object-Oriented Programs | Diwan, Moss, McKinley (UMass) | OOPSLA 96, p. 292 |
| [HöUn95] | Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback | Hölzle, Ungar | PLDI 94, p. 326 |
| Interprocedural | |||
| [Hölzle94] | Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming | Hölzle | PhD thesis 94 |
| [Dolby97] | Automatic Inline Allocation of Objects | Dolby (U Illinois) | PLDI 97, p. 7 |
| [Goodwin97] | Interprocedural Dataflow Analysis in an Executable Optimizer | Goodwin (DEC) | PLDI 97, p. 122 |
| [AGS97] | Aggressive Inlining | Ayers, Gottlieb, Schooler | PLDI 97, p. 134 |
| Code Generation | |||
| [HaChri86] | High-Quality Code Generation Via Bottom-Up Tree Pattern Matching | Hatcher, Christopher (IIT) | POPL 86, p. 119 |
| [Chase87] | An Improvement to Bottom-Up Tree Pattern Matching | Chase (Rice) | POPL 87, p. 168 |
| [PeGra88] | Optimal Code Generation for Expression Trees: An Application of BURS Theory | Pelegri-Llopart, Graham (Berkeley) | POPL 88, p. 294 |
| [BDB90] | Efficient Retargetable Code Generation using Bottom-Up Tree Pattern Matching | Balachandran, Dhamdhere, Biswas | Computer Language 15:3, 1990, p. 127 |
| [FraHa91b] | A Code Generation Interface for ANSI C | Fraser, Hanson | Sw Practice and Exp 21:9, Sep 91, p. 963 |
| [FraHe91] | Hard-coding Bottom-up Code Generation Tables to Save Time and Space | Fraser and Henry | Sw Practice and Exp 21:1, Jan 91, p. 1 |
| [Proebsting92a] | Code Generation Techniques | Proebsting (U Wisconsin - Madison) | PhD thesis 92 |
| [Proebsting92b] | Simple and Efficient BURS Table Generation | Proebsting (U Wisconsin - Madison) | PLDI 92, p. 331 |
| [FraHeProe] | BURG -- Fast Optimal Instruction Selection and Tree Parsing | Fraser, Henry, Proebsting | manual |
| [FHP92] | Engineering a Simple, Efficient Code Generator Generator | Fraser, Hanson, Proebsting | LOPLAS 1:3, Sep. 92, p. 213 |
| [ProeWha96] | One-Pass, Optimal Tree Parsing -- With or Without Trees | Proebsting, Whaley (U Arizona) | CC 96, p. 294 |
| [Gough] | Bottom up Tree Rewriting with MBURG: The MBURG Reference Manual | Gough | manual |
| [NKWA96] | Code Generation = A* + BURS | Nymeyer, Katoen, Westra, Alblas | CC 96, p. 160 |
| Register Allocation | |||
| Local | |||
| [HFG89] | On the Minimization of Loads/Stores in Local Register Allocation | Hsu, Fischer, Goodman | IEEE Trans Sw Eng 15:10, Oct 89, p. 1252 |
| [BGA98] |
Linear-Time Register Allocation for a Fixed Number of Registers
|
Bodlaender, Gustedt, Arne Telle |
9th ACM/SIAM Symposium on Discrete Algorithms |
| See also instruction scheduling | |||
| Intraprocedural | |||
| [Lueh96] | Issues in Register Allocation by Graph Coloring | Lueh (CMU) | TR 96-171 |
| [LGA96] | Global Register Allocation Based on Graph Fusion | Lueh, Gross, Adl-Tabatabai (CMU) | TR 96-106 |
| [BWD95] | Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling | Burger, Waddell, Dybvig (Indiana) | PLDI 95, p. 130 |
| [Pinter93] | Register Allocation with Instruction Scheduling: a New Approach | Pinter (Technion) | PLDI 93, p. 248 |
| [HGAM92] | A Register Allocation Framework Based on Hierarchical Cyclic Interval Graphs | Hendren, Gao, Altman, Mukerji (McGill) | CC 92, p. 176 |
| [BGS95b] | HARE: A Hierarchical Allocator for Registers in Multiple Issue Architectures | Berson, Gupta, Soffa (U Pittsburgh) | TR 95-06 |
| [CaKo91] | Register Allocation via Hierarchical Graph Coloring | Callahan, Koblenz (Tera) | PLDI 91, p. 192 |
| [GeoApp96] | Iterated Register Coalescing | George, Appel | POPL 96, p. 208 |
| [BCT94] | Improvements to Graph Coloring Register Allocation | Briggs, Cooper, Torczon (Rice) | TOPLAS 16:3, May 94, p. 428 |
| [Briggs92] | Register Allocation via Graph Coloring | Briggs (Rice) | PhD thesis 92 |
| [ChoHe90] | The Priority-Based Coloring Approach to Register Allocation | Chow, Hennessy | TOPLAS 12, Oct 90, p. 501 |
| [ProeFi96] | Demand-Driven Register Allocation | Proebsting, Fischer | TOPLAS 18:6, Nov 96, p. 683 |
| [NoPo94] | Register Allocation Over the Program Dependence Graph | Norris, Pollock (U Delaware) | PLDI 94, p. 266 |
| [Nickerson90] | Graph Coloring Register Allocation for Processors with Multi-Register Operands | Nickerson (Intel) | PLDI 90, p. 40 |
| [FraHa92] | Simple Register Spilling in a Retargetable Compiler | Fraser, Hanson | Sw Practice and Exp 22:1, Jan 92, p. 85 |
| [GouLe95] | Register Allocation in the Gardens Point Compilers | Gough, Ledermann (Queensland) | ACSC 95 |
| [BDEO97] | Spill Code Minimization via Interference Region Spilling | Bergner, Dahl, Engebretsen, O'Keefe (U Minnesota) | PLDI 97, p. 287 |
| [LueGro97] | Call-Cost Directed Register Allocation | Lueh, Gross (CMU) | PLDI 97, p. 296 |
| Interprocedural | |||
| [Chow88] | Minimizing Register Usage Penalty at Procedure Calls | Chow | PLDI 88, p. 85 |
| [KuFi96] | Minimum Cost Interprocedural Register Allocation | Kurlander, Fischer (U Wisconsin - Madison) | POPL 96, p. 230 |
| [Wall88] | Register Windows vs. Register Allocation | Wall (Digital) | PLDI 88, p. 67 |
| Scheduling | |||
| Execution Unit Scheduling | |||
| [RauFi93] | Instruction-Level Parallel Processing: History, Overview, and Perspective | Rau, Fisher (HP) | J. Supercomputing 7, May 93, p. 9 |
| [CLMCH95] | The Importance of Prepass Code Scheduling for Superscalar and Superpipelined Processors | Chang, Lavery, Mahlke, Chen, Hwu (U Illinois) | IEEE Trans on Computers 44:3, Mar 95 |
| [Griesemer92] | Scheduling Instructions by Direct Placement | Griesemer (Zürich) | CC 92, p. 229 |
| [Lam88] | Software Pipelining: An Effective Scheduling Technique for VLIW Machines | Lam (CMU) | PLDI 88, p. 318 |
| [KPF95] | Efficient Instruction Scheduling for Delayed-Load Architectures | Kurlander, Proebsting, Fischer (UWisconsin - Madison) | TOPLAS 17:5, 95, p. 740 |
| [ProeFi91] | Linear-time, Optimal Code Scheduling for Delayed-Load Architectures | Proebsting, Fischer (UWisconsin - Madison) | PLDI 91, p. 256 |
| [GooHsu88] | Code Scheduling and Register Allocation in Large Basic Blocks | Goodman, Hsu | Supercomputing 88, p. 442 |
| [BEH91] | Integrating Register Allocation and Instruction Scheduling for RISCs | Bradlee, Eggers, Henry (UWashington) | ASPLOS 91, p. 122 |
| [BHE91] | The Marion System for Retargetable Instruction Scheduling | Bradlee, Henry, Eggers (UWashington) | PLDI 91, p. 229 |
| [BeRo91] | Global Instruction Scheduling for Superscalar Machines | Bernstein, Rodeh | PLDI 91, p. 241 |
| [RGSL96] | Software Pipelining Showdown: Optimal vs. Heuristic Methods in a Production Compiler | Ruttenberg, Gao, Stoutchinin, Lichtenstein (McGill) | PLDI 96, p. 1 |
| Cache Scheduling | |||
| [HKC97] | Efficient Procedure Mapping Using Cache Line Coloring | Hashemi, Kaeli, Calder | PLDI 97, p. 171 |
| [YJKS97] | Near-Optimal Intraprocedural Branch Alignment | Young, Johnson, Karger, Smith | PLDI 97, p. 183 |
| Cross-Platform Assembly | |||
| [RaFe95] | The New Jersey Machine-Code Toolkit | Ramsey, Fernandez | Usenix 95, p. 289 |
| Dynamic Code Generation | |||
| [Engler96] | VCODE: A Retargetable, Extensible, Very Fast Dynamic Code Generation System | Engler (MIT) | PLDI 96, p. 160 |
| [LDG95] | Clarity MCode: A Retargetable Intermediate Representation for Compilation | Lewis, Deutsch, Goldstein | IR 95, p. 119 |
| [EHK96] | 'C: A Language for High-Level, Efficient, and Machine-Independent Dynamic Code Generation | Engler, Hsieh, Kaashoek (MIT) | POPL 96, p. 131 |
| [PoEngKaa] | tcc: A Template-Based Compiler for 'C | Poletto, Engler, Kaashoek (MIT) | |
| [PEK97] | tcc: A System for Fast, Flexible, and High-Level Dynamic Code Generation | Poletto, Engler, Kaashoek (MIT) | PLDI 97, p. 109 |
| [EngProe94] | DCG: An Efficient, Retargetable Dynamic Code Generation System | Engler, Proebsting | ASPLOS 94, p. 263 |
| [Morris91] | CCG: A Prototype Coagulating Code Generator | Morris | PLDI 91, p. 45 |
| [CoNoë96] | A General Approach for Run-Time Specialization and its Application to C | Consel, Noël | POPL 96, p. 145 |
| [Wall92] | Systems for Late Code Modification | Wall (Digital) | WRL report 92-3 |
| [Franz94] | Code-Generation On-the-Fly: A Key to Portable Software | Franz (Zürich) | PhD thesis 94 |
| [KEH91] | A Case for Runtime Code Generation | Keppel, Eggers, Henry (U Washington) | TR 91-11-04 |
| [Keppel91] | A Portable Interface for On-The-Fly Instruction Space Modification | Keppel (U Washington) | ASPLOS 91, p. 86 |
| [KEH93] | Evaluating Runtime-Compiled Value-Specific Optimizations | Keppel, Eggers, Henry (U Washington) | TR 93-11-02 |
| [KeRu93] | Faster Dynamic Linking for SPARC V8 and System V.4 | Keppel, Russell (U Washington) | TR 93-12-08 |
| Debugging | |||
| [Wismüller94] | Debugging of Globally Optimized Programs Using Data Flow Analysis | Wismüller | PLDI 94, p. 278 |
| [BHS92] | A New Approach to Debugging Optimized Code | Brooks, Hansen, Simmons | PLDI 92, p. 1 |
| [HCU92] | Debugging Optimized Code with Dynamic Deoptimization | Hölzle, Chambers, Ungar | PLDI 92, p. 32 |
| [RaHa92] | A Retargetable Debugger | Ramsey, Hanson | PLDI 92, p. 22 |
| Assembly Language Manuals | |||
| [Intel96a] | Pentium Pro Family Developer's Manual, Vol 2: Programmer's Reference Manual | Intel | 96 |
| [Intel96b] | Pentium Pro Family Developer's Manual, Vol 3: Operating System Writer's Manual | Intel | 96 |
| [Intel95] | Optimizations for Intel's 32-Bit Processors | Intel | 95 AP-526 |
| [Motorola87] | MC68030 Enhanced 32-Bit Microprocessor User's Manual | Motorola | 87 MC68030UM/AD |
| [Motorola89] | MC68040 32-Bit Microprocessor User's Manual | Motorola | 89 MC68040UM/AD |
| [IBMMot93] | PowerPC 601 RISC Microprocessor User's Manual | IBM, Motorola | 93 MPC601UM/AD Rev. 1 |
| [HKHW96] | The PowerPC Compiler Writer's Guide | Hoxey, Karim, Hay, Warren | 96 MPRPPCOMP-01 |
| [Heinrich93] | MIPS R4000 User's Manual | Heinrich | 93 |
| [SPARC92] | The SPARC Architecture Manual, Version 8 | SPARC International | 92 SAV080SI9106 |
| [Digital92] | Alpha Architecture Handbook | Digital | 92 |
| [Kane96] | PA-RISC 2.0 Architecture | Kane | 96 |
| Java Manuals | |||
| [ArGo96] | The Java Programming Language | Arnold, Gosling | 96 |
| [GJS96] | The Java Language Specification | Gosling, Joy, Steele | 96 |
| [LiYe97] | The Java Virtual Machine Specification | Lindholm, Yellin | 97 |
| [GoYe96a] | The Java Application Programming Interface, Vol 1: Core Packages | Gosling, Yellin | 96 |
| [GoYe96b] | The Java Application Programming Interface, Vol 2: Window Toolkit and Applets | Gosling, Yellin | 96 |
| Java Variants | |||
| [MBL97] | Parametrized Types for Java | Myers, Bank, Liskov (MIT) | POPL 97, p. 132 |
| [MBL97] | Pizza into Java: Translating Theory into Practice | Odersky, Wadler | POPL 97, p. 146 |
| [Golliver97a] | First-Implementation Artifacts in Java | Golliver | Intel 97 |
| [Golliver97b] | The Ivory Brand of Java | Golliver | Intel 97 |