Bibliography |
|
Monday, August 9, 1999
Below are some interesting papers related to compilers and programming languages that Waldemar has seen.
Languages | |||
Abstraction Mechanisms | |||
| [GHJV95] | Design Patterns: Elements of Reusable Object-Oriented Software | Gamma, Helm, Johnson, Vlissides | Addison-Wesley 1995 |
| [Cardelli96] | Bad Engineering Properties of Object-Oriented Languages | Luca Cardelli | ACM Computing Surveys 28, Article 150, 1996 |
| [MiSe98] | A Study of The Fragile Base Class Problem | Leonid Mikhajlov, Emil Sekerinski | ECOOP 1998, p. 355-382 |
| [CliRee90] | Macros that Work | William Clinger, Jonathan Rees | POPL 1990, p. 155-162 |
| [SPL98] | Evolution of Object Behavior using Context Relations | Linda Seiter, Jens Palsberg, Karl Lieberherr | IEEE Transactions on Software Engineering, 24:1, 1998, p. 79-92 |
Module Systems | |||
| [CuRau90] | A Module System for Scheme | Pavel Curtis, James Rauen | 1990 ACM Conference on Lisp and Functional Programming, p. 13-19 |
Theory | |||
Type Systems | |||
| [AbCa96] | A Theory of Objects | Martin Abadi, Luca Cardelli | Springer 1996 |
| [Cardelli97] | Type Systems | Luca Cardelli | The Computer Science and Engineering Handbook. CRC Press, 1997, Chapter 103, p. 2208-2236 |
| [EKC98] | Predicate Dispatching: A Unified Theory of Dispatch | Michael Ernst, Craig Kaplan, Craig Chambers | ECOOP 1998, p. 186-211 |
| [SSJ98] | Dynamic Typing as Staged Type Inference | Mark Shields, Tim Sheard, Simon Peyton Jones | POPL 1998, p. 289-302 |
| [RieSto98] | Privacy via Subsumption | Jon Riecke, Christopher Stone | Fifth International Workshop on Foundations of Object-Oriented Languages (FOOL 5), 1998 |
Semantics | |||
| [Schmidt86] | Denotational Semantics: A Methodology for Language Development | David Schmidt | Allyn and Bacon 1986 |
| [SloKu95] | Formal Syntax and Semantics of Programming Languages | Kenneth Slonneger, Barry Kurtz | Addison-Wesley 1995 |
| [Wallace97] | The Semantics of the Java Programming Language: Preliminary Version | Charles Wallace | University of Michigan CSE-TR-355-97, 1997 |
Effects | |||
| [GJS90] | Report on the FX-90 Programming Language | David Gifford, Pierre Jouvelot, Mark Sheldon | MIT memo 1990 |
| [GJSOT91] | Report on the FX-91 Programming Language | David Gifford, Pierre Jouvelot, Mark Sheldon, James O'Toole | 1991 MIT LCS TR-531 |
| [Lucassen87] | Types and Effects: Towards the Integration of Functional and Imperative Programming | John Lucassen | 1987 MIT LCS TR-408 |
Object Architectures | |||
CORBA | |||
| [Siegel96] | CORBA Fundamentals and Programming | Jon Siegel | Wiley 1996 |
COM | |||
| [Box98] | Essential COM | Don Box | Addison-Wesley 1998 |
| [Redmond97] | DCOM: Microsoft Distributed Component Object Model | Frank Redmond | IDG Books 1997 |
| [Kirtland97a] | Object-Oriented Software Development Made Simple with COM+ Runtime Services | Mary Kirtland | MSJ 12:11, Nov 1997, p. 49-59 |
| [Kirtland97b] | The COM+ Programming Model Makes it Easy to Write Components in any Language | Mary Kirtland | MSJ 12:12, Dec 1997, p. 19-28 |
JavaScript | |||
| [Flanagan98] | JavaScript: The Definitive Guide, 3rd Ed. | David Flanagan | O'Reilly 1998 |
| [ECMA262] | ECMAScript Language Specification | ISO/IEC Standard 16262 | ISO/ECMA 1998 |
| [ArGo96] | The Java Programming Language | Ken Arnold, James Gosling | Addison-Wesley 1996 |
| [GJS96] | The Java Language Specification | James Gosling, Bill Joy, Guy Steele | Addison-Wesley 1996 |
| [LiYe97] | The Java Virtual Machine Specification | Tim Lindholm, Frank Yellin | Addison-Wesley 1997 |
| [GoYe96a] | The Java Application Programming Interface, Vol 1: Core Packages | James Gosling, Frank Yellin | Addison-Wesley 1996 |
| [GoYe96b] | The Java Application Programming Interface, Vol 2: Window Toolkit and Applets | James Gosling, Frank Yellin | Addison-Wesley 1996 |
Java Variants | |||
| [MBL97] | Parametrized Types for Java | Andrew Myers, Joseph Bank, Barbara Liskov | POPL 1997, p. 132-145 |
| [OdeWa97] | Pizza into Java: Translating Theory into Practice | Martin Odersky, Philip Wadler | POPL 1997, p. 146-159 |
| [Golliver97a] | First-Implementation Artifacts in Java | Roger Golliver | Intel 1997 |
| [Golliver97b] | The Ivory Brand of Java | Roger Golliver | Intel 1997 |
Miscellaneous Languages | |||
| [WCS96] | Programming Perl, 2nd Ed. | Larry Wall, Tom Christiansen, Randal Schwartz | O'Reilly 1996 |
| [Friedl97] | Mastering Regular Expressions | Jeffrey Friedl | O'Reilly 1997 |
| [Lomax98] | VB & VBA in a Nutshell | Paul Lomax | O'Reilly 1998 |
| [Cow97] | The NetRexx Language | Michael Cowlishaw | 1997 |
| [Steele90] | Common Lisp: The Language, 2nd Ed. | Guy Steele | Digital Press 1990 |
Research Languages | |||
| Research Language Overviews | Mark Leone | http://www.cs.cmu.edu/~mleone/language/overviews.html | |
| [ChaLea96] | BeCecil, A Core Object-Oriented Language with Block Structure and Multimethods: Semantics and Typing | Craig Chambers, Gary Leavens | Fourth International Workshop on Foundations of Object-Oriented Languages (FOOL 4), 1997 |
| [Chambers97] | The Cecil Language: Specification and Rationale | Craig Chambers | University of Washington 1997 |
| [Shalit96] | The Dylan Reference Manual | Andrew Shalit | Addison Wesley 1996 |
| [Apple92] | Dylan: An Object-Oriented Dynamic Language | Apple computer | 1992 |
| [CDGJKN89] | Modula-3: Language definition | Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, Greg Nelson | Digital 1989 |
| [Marais94] | Oberon System 3 | Johannes Marais | Dr. Dobb's Journal, 19:11, October 1994, p. 42-50+104 |
| [Marais96] | Extensible Software Systems in Oberon | Johannes Marais | Journal of Computational and Graphical Statistics, 5:3, September 1996, p. 284-298 |
| [Cardelli94] | Obliq: A Language with Distributed Scope | Luca Cardelli | DEC SRC Research Report 122, 1994 |
| [Cardelli95] | A Language with Distributed Scope | Luca Cardelli | Computing Systems, 8:1, January 1995, p. 27-59 |
| [Omohundro93] | The Sather Programming Language | Stephen Omohundro | Dr. Dobb's Journal, 18:11, October 1993, p. 42-48 |
| [GSVKF96] | A Language Manual for Sather 1.1 and pSather 1.1 | Benedict Gomes, David Stoutamire, Boris Vaysman, Holger Klawitter, Jerome Feldman | 1996 |
| [LCDGGJM95] | Theta Reference Manual, Preliminary Version | Barbara Liskov, Dorothy Curtis, Mark Day, Sanjay Ghemawat, Robert Gruber, Paul Johnson, Andrew Myers | 1995 MIT Programming Methodology Group Memo 88 |
WebL | |||
| [KiMa98] | WebL -- A Programming Language for the Web | Thomas Kistler, Hannes Marais | WWW7 conference, 1998 |
Assembly Languages | |||
| [Intel99] | IA64 Application Developer's Architecture Guide | Intel | 1999 |
| [Intel96a] | Pentium Pro Family Developer's Manual, Vol 2: Programmer's Reference Manual | Intel | 1996 |
| [Intel96b] | Pentium Pro Family Developer's Manual, Vol 3: Operating System Writer's Manual | Intel | 1996 |
| [Intel95] | Optimizations for Intel's 32-Bit Processors | Intel | 1995 AP-526 |
| [Motorola87] | MC68030 Enhanced 32-Bit Microprocessor User's Manual | Motorola | 1987 MC68030UM/AD |
| [Motorola89] | MC68040 32-Bit Microprocessor User's Manual | Motorola | 1989 MC68040UM/AD |
| [IBMMot93] | PowerPC 601 RISC Microprocessor User's Manual | IBM, Motorola | 1993 MPC601UM/AD Rev. 1 |
| [HKHW96] | The PowerPC Compiler Writer's Guide | Steve Hoxey, Faraydon Karim, Bill Hay, Hank Warren | 1996 MPRPPCOMP-01 |
| [Heinrich93] | MIPS R4000 User's Manual | Joe Heinrich | 1993 |
| [SPARC92] | The SPARC Architecture Manual, Version 8 | SPARC International | 1992 SAV080SI9106 |
| [Digital92] | Alpha Architecture Handbook | Digital | 1992 |
| [Kane96] | PA-RISC 2.0 Architecture | Gerry Kane | 1996 |
Debugging | |||
| [Wismüller94] | Debugging of Globally Optimized Programs Using Data Flow Analysis | Wismüller | PLDI 1994, p. 278 |
| [BHS92] | A New Approach to Debugging Optimized Code | Brooks, Hansen, Simmons | PLDI 1992, p. 1 |
| [HCU92] | Debugging Optimized Code with Dynamic Deoptimization | Hölzle, Craig Chambers, Ungar | PLDI 1992, p. 32 |
| [RaHa92] | A Retargetable Debugger | Ramsey, Hanson | PLDI 1992, p. 22 |
Compilers | |||
Compiler Books | |||
| [ACHM82] | Engineering a Compiler: VAX-11 Code Generation and Optimization | Anklam, Cutler, Heinen, MacLaren | 1982 |
| [ASU86] | Compilers: Principles, Techniques, and Tools | Aho, Sethi, Ullman | 1986 |
| [Ellis86] | Bulldog: A Compiler for VLIW Architectures | Ellis | 1986 |
| [Lee89] | Realistic Compiler Generation | Lee | 1989 |
| [Holub90] | Compiler Design in C | Holub | 1990 |
| [FiLeBl91] | Crafting a Compiler with C | Fischer, LeBlanc | Benjamin/Cummings 1991 |
| [FraHa95] | A Retargetable C Compiler: Design and Implementation | Fraser, Hanson | Benjamin/Cummings 1995 |
| [Appel98] | Modern Compiler Implementation in C | Appel | Cambridge 1998 |
Integrated Compilers | |||
| [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 1996, p. 219 |
| [AGL96] | cmcc: Competitive modular compiler in C++ | Adl-Tabatabai, Gross, Lueh (CMU) | OOPSLA 1996, p. 51 |
| [DDGLC96] | Vortex: An Optimizing Compiler for Object-Oriented Languages | Dean, DeFouw, Grove, Litvinov, Craig Chambers | OOPSLA 1996, p. 83 |
| [Brandis95] | Optimizing Compilers for Structured Programming Languages | Brandis (Zürich) | PhD thesis 1995 |
| [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 1991, p. 29 |
| [Horwat88] | A Concurrent Smalltalk Compiler for the Message-Driven Processor | Horwat (MIT) | 1988 MIT AI-TR 1080 |
| [Horwat89] | Concurrent Smalltalk on the Message-Driven Processor | Horwat (MIT) | 1989 MIT AI-TR 1321 |
Parsers | |||
| See also Compiler Books | |||
| [Pager77] | A Practical General Method for Constructing LR(k) Parsers | David Pager | Acta Informatica 7, 1977, p. 249-268 |
| [WeSha81] | LR -- Automatic Parser Generator and LR(1) Parser | Charles Wetherell, Alfred Shannon | IEEE Transactions on Software Engineering SE-7:3, May 1981, p. 274-278 |
| [Ives86] | Unifying View of Recent LALR(1) Lookahead Set Algorithms | Fred Ives | SIGPLAN 1986 Symposium on Compiler Construction, p. 131-135 |
| [BeSchi86] | A Practical Arbitrary Look-ahead LR Parsing Technique | Manuel Bermudez, Karl Schimpf | SIGPLAN 1986 Symposium on Compiler Construction, p. 136-144 |
| [Spector88] | Efficient Full LR(1) Parser Generation | David Spector | SIGPLAN Notices 23:12, Dec 1998, p. 143-150 |
| [Burshteyn94] | Algorithms in Muskok parser generator | Boris Burshteyn | comp.compilers, March 16, 1994 |
Dataflow Analysis and Intermediate Representations | |||
Traditional | |||
| [TjiaHe92] | Sharlit -- A tool for building optimizers | Tjiang, Hennessy (Stanford) | PLDI 1992, p. 82 |
| [BGS95a] | GURRR: A Global Unified Resource Requirements Representation | Berson, Gupta, Soffa | IR 1995, p. 23 |
| [Tjiang93] | Automatic Generation of Data-Flow Analyzers: A Tool for Building Optimizers | Tjiang | PhD thesis 1993 |
| [DRZ92] | How to Analyze Large Programs Efficiently and Informatively | Dhamdhere, Rosen, Zadeck | PLDI 1992, p. 212 |
| [MaRy90] | An Efficient Hybrid Algorithm for Incremental Data Flow Analysis | Marlowe, Ryder (Rutgers) | POPL 1990, p. 184 |
| [JaiTho88] | An Efficient Approach to Data Flow Analysis in a Multiple Pass Global Optimizer | Jain, Thompson (HP) | PLDI 1988, p. 154 |
Program Dependence Graphs | |||
| [BaMa92] | Program Dependence Graphs for the Rest of Us | Ballance, Maccabe (U New Mexico) | TR 1992-10 |
| [WCES94] | Value Dependence Graphs: Representation Without Taxation | Daniel Weise, Roger Crew, Michael Ernst, Bjarne Steensgaard | POPL 1994, p. 297-310 |
| [Ruf95] | Optimizing Sparse Representations for Dataflow Analysis | Ruf (Microsoft) | IR 1995, p. 50 |
Static Single Assignment: Basics | |||
| [LeTa79] | A Fast Algorithm for Finding Dominators in a Flowgraph | Lengauer, Tarjan (Stanford) | TOPLAS 1:1, Jul 1979, p. 121 |
| [CFRWZ89] | An Efficient Method of Computing Static Single Assignment Form | Cytron, Ferrante, Rosen, Wegman, Zadeck (IBM) | POPL 1989, p. 25 |
| [CFRWZ91] | Efficiently Computing Static Single Assignment Form and the Control Dependence Graph | Cytron, Ferrante, Rosen, Wegman, Zadeck (IBM) | TOPLAS 13:4, Oct 1991, p. 451 |
| [CyFe93] | Efficiently Computing phi-Nodes On-The-Fly | Cytron, Ferrante | Languages and Compilers for Parallel Computing 1993, p. 461 |
Static Single Assignment: DJ Graphs | |||
| [SGL95a] | Incremental Computation of Dominator Trees | Sreedhar, Gao, Lee (McGill) | IR 1995, p. 1 |
| [SGL96] | A New Framework for Exhaustive and Incremental Data Flow Analysis Using DJ Graphs | Sreedhar, Gao, Lee (McGill) | PLDI 1996, p. 278 |
| [SGL95b] | Efficient Data Flow Analysis Using DJ Graphs: Elimination Methods Revisited | Sreedhar, Gao, Lee (McGill) | TR 1995-93 |
| [SreeGao95] | A Linear Time Algorithm for Placing phi-Nodes | Sreedhar, Gao (McGill) | POPL 1995, p. 62 |
| [Sreedhar95] | Efficient Program Analysis Using DJ Graphs | Sreedhar (McGill) | PhD thesis 1995 |
Static Single Assignment: Other Variants | |||
| [Ramalingam97] | On Sparse Evaluation Representations | Ramalingam (IBM) | Fourth International Static Analysis Symposium 1997 |
| [PBJMS91] | Dependence Flow Graphs: An Algebraic Approach to Program Dependencies | Pingali, Beck, Johnson, Moudgill, Stodghill (Cornell) | POPL 1991, p. 67 |
| [JPP94] | The Program Structure Tree: Computing Control Regions in Linear Time | Johnson, Pearson, Pingali (Cornell) | PLDI 1994, p. 171 |
| [JoPi93] | Dependence-Based Program Analysis | Johnson, Pingali (Cornell) | PLDI 1993, p. 78 |
| [CCF91] | Automatic Construction of Sparse Data Flow Evaluation Graphs | Choi, Cytron, Ferrante (IBM) | POPL 1991, p. 55 |
| [CliPa95] | A Simple Graph-Based Intermediate Representation | Click, Paleczny | IR 1995, p. 35 |
| [TuPa95] | Efficient Building and Placing of Gating Functions | Tu, Padua (U Illinois) | PLDI 1995, p. 47 |
| [Havlak93] | Construction of Thinned Gated Single-Assignment Form | Havlak | Langs and Compilers for Parallel Computing 1993, 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 1994, 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 1994, p. 1684 |
Optimization | |||
Constant Propagation | |||
| [WeZa91] | Constant Propagation with Conditional Branches | Wegman, Zadeck (IBM) | TOPLAS 13:2, Apr 1991, p. 181 |
| [SWG94] | Constant Propagation: A Fresh Demand-Driven Look | Stoltz, Wolfe, Gerlek (OGI) | SIGAPP 1994 |
Partial Redundancy Elimination | |||
| [AWZ88] | Detecting Equality of Variables in Programs | Alpern, Wegman, Zadeck | POPL 1988, p. 1 |
| [RWZ88] | Global Value Numbers and Redundant Computation | Rosen, Wegman, Zadeck | POPL 1988, p. 12 |
| [KRS92] | Lazy Code Motion | Knoop, Rüthing, Steffen | PLDI 1992, p. 224 |
| [KRS95] | The Power of Assignment Motion | Knoop, Rüthing, Steffen | PLDI 1995, p. 233 |
| [Click95a] | Global Code Motion; Global Value Numbering | Click | PLDI 1995, p. 246 |
| [CliCoo95] | Combining Analyses, Combining Optimizations | Click, Cooper (Rice) | TOPLAS 17:2, Mar 1995, p. 181 |
| [Click95b] | Combining Analyses, Combining Optimizations | Click (Rice) | PhD thesis 1995 |
| [Simpson96] | Value-Driven Redundancy Elimination | Simpson (Rice) | PhD Thesis 1996 |
| [CCKLLT97] | A New Algorithm for Partial Redundancy Elimination Based on SSA Form | Chow, Chan, Kennedy, Liu, Lo, Tu (SGI) | PLDI 1997, p. 273 |
Range Checking | |||
| [GouKlae96] | Eliminating Range Checks using Static Single Assignment Form | Gough, Klaeren | ACSC 1996 |
| [GouKlae94] | Eliminating Range Checks using Static Single Assignment Form | Gough, Klaeren | Tübingen TR 1994 |
| [KoWo95] | Elimination of Redundant Array Subscript Range Checks | Kolte, Wolfe | PLDI 1995, p. 270 |
| [Gupta90] | A Fresh Look at Optimizing Array Bound Checking | Gupta | PLDI 1990, p. 272 |
General | |||
| [McCJo92] | Using Static Single Assignment Form in a Code Optimizer | McConnell, Johnson (U Illinois) | LOPLAS 1:2, Jun 1992, p. 152 |
| [CSV95] | Operator Strength Reduction | Cooper, Simpson, Vick (Rice) | TR95635-S 1995 |
| [McConnell93] | Tree-Based Code Optimization | McConnell (U Illinois) | PhD thesis 1993 |
| [HHGMLH95] | Compiler Technology for Future Microprocessors | Hwu, Hank, Gallagher, Mahlke, Lavery, Haab, Gyllenhaal, August | Proc. IEEE 83:12, Dec. 1995, 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 1995, p. 141 |
| [DMSV89] | A Fast Method Dispatcher for Compiled Languages with Multiple Inheritance | Dixon, McKee, Schweizer, Vaughan | OOPSLA 1989, p. 211 |
| [ViHo96] | Compact Dispatch Tables for Dynamically Typed Object Oriented Languages | Vitek, Horspool | CC 1996, p. 309 |
| [DMM96] | Simple and Effective Analysis of Statically-Typed Object-Oriented Programs | Diwan, Moss, McKinley (UMass) | OOPSLA 1996, p. 292 |
| [HöUn95] | Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback | Hölzle, Ungar | PLDI 1994, p. 326 |
Interprocedural | |||
| [Hölzle94] | Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming | Hölzle | PhD thesis 1994 |
| [Dolby97] | Automatic Inline Allocation of Objects | Dolby (U Illinois) | PLDI 1997, p. 7 |
| [Goodwin97] | Interprocedural Dataflow Analysis in an Executable Optimizer | Goodwin (DEC) | PLDI 1997, p. 122 |
| [AGS97] | Aggressive Inlining | Ayers, Gottlieb, Schooler | PLDI 1997, p. 134 |
Code Generation | |||
| [HaChri86] | High-Quality Code Generation Via Bottom-Up Tree Pattern Matching | Hatcher, Christopher (IIT) | POPL 1986, p. 119 |
| [Chase87] | An Improvement to Bottom-Up Tree Pattern Matching | Chase (Rice) | POPL 1987, p. 168 |
| [PeGra88] | Optimal Code Generation for Expression Trees: An Application of BURS Theory | Pelegri-Llopart, Graham (Berkeley) | POPL 1988, 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 1991, 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 1991, p. 1 |
| [Proebsting92a] | Code Generation Techniques | Proebsting (U Wisconsin - Madison) | PhD thesis 1992 |
| [Proebsting92b] | Simple and Efficient BURS Table Generation | Proebsting (U Wisconsin - Madison) | PLDI 1992, 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 1992, p. 213 |
| [ProeWha96] | One-Pass, Optimal Tree Parsing -- With or Without Trees | Proebsting, Whaley (U Arizona) | CC 1996, 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 1996, 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 1989, p. 1252 |
| See also instruction scheduling | |||
Intraprocedural | |||
| [Lueh96] | Issues in Register Allocation by Graph Coloring | Lueh (CMU) | TR 1996-171 |
| [LGA96] | Global Register Allocation Based on Graph Fusion | Lueh, Gross, Adl-Tabatabai (CMU) | TR 1996-106 |
| [BWD95] | Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling | Burger, Waddell, Dybvig (Indiana) | PLDI 1995, p. 130 |
| [Pinter93] | Register Allocation with Instruction Scheduling: a New Approach | Pinter (Technion) | PLDI 1993, p. 248 |
| [HGAM92] | A Register Allocation Framework Based on Hierarchical Cyclic Interval Graphs | Hendren, Gao, Altman, Mukerji (McGill) | CC 1992, p. 176 |
| [BGS95b] | HARE: A Hierarchical Allocator for Registers in Multiple Issue Architectures | Berson, Gupta, Soffa (U Pittsburgh) | TR 1995-06 |
| [CaKo91] | Register Allocation via Hierarchical Graph Coloring | Callahan, Koblenz (Tera) | PLDI 1991, p. 192 |
| [GeoApp96] | Iterated Register Coalescing | George, Appel | POPL 1996, p. 208 |
| [BCT94] | Improvements to Graph Coloring Register Allocation | Briggs, Cooper, Torczon (Rice) | TOPLAS 16:3, May 1994, p. 428 |
| [Briggs92] | Register Allocation via Graph Coloring | Briggs (Rice) | PhD thesis 1992 |
| [ChoHe90] | The Priority-Based Coloring Approach to Register Allocation | Chow, Hennessy | TOPLAS 12, Oct 1990, p. 501 |
| [ProeFi96] | Demand-Driven Register Allocation | Proebsting, Fischer | TOPLAS 18:6, Nov 1996, p. 683 |
| [NoPo94] | Register Allocation Over the Program Dependence Graph | Norris, Pollock (U Delaware) | PLDI 1994, p. 266 |
| [Nickerson90] | Graph Coloring Register Allocation for Processors with Multi-Register Operands | Nickerson (Intel) | PLDI 1990, p. 40 |
| [FraHa92] | Simple Register Spilling in a Retargetable Compiler | Fraser, Hanson | Sw Practice and Exp 22:1, Jan 1992, p. 85 |
| [GouLe95] | Register Allocation in the Gardens Point Compilers | Gough, Ledermann (Queensland) | ACSC 1995 |
| [BDEO97] | Spill Code Minimization via Interference Region Spilling | Bergner, Dahl, Engebretsen, O'Keefe (U Minnesota) | PLDI 1997, p. 287 |
| [LueGro97] | Call-Cost Directed Register Allocation | Lueh, Gross (CMU) | PLDI 1997, p. 296 |
Interprocedural | |||
| [Chow88] | Minimizing Register Usage Penalty at Procedure Calls | Chow | PLDI 1988, p. 85 |
| [KuFi96] | Minimum Cost Interprocedural Register Allocation | Kurlander, Fischer (U Wisconsin - Madison) | POPL 1996, p. 230 |
| [Wall88] | Register Windows vs. Register Allocation | Wall (Digital) | PLDI 1988, p. 67 |
Scheduling | |||
Execution Unit Scheduling | |||
| [RauFi93] | Instruction-Level Parallel Processing: History, Overview, and Perspective | Rau, Fisher (HP) | J. Supercomputing 7, May 1993, 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 1995 |
| [Griesemer92] | Scheduling Instructions by Direct Placement | Griesemer (Zürich) | CC 1992, p. 229 |
| [Lam88] | Software Pipelining: An Effective Scheduling Technique for VLIW Machines | Lam (CMU) | PLDI 1988, p. 318 |
| [KPF95] | Efficient Instruction Scheduling for Delayed-Load Architectures | Kurlander, Proebsting, Fischer (UWisconsin - Madison) | TOPLAS 17:5, 1995, p. 740 |
| [ProeFi91] | Linear-time, Optimal Code Scheduling for Delayed-Load Architectures | Proebsting, Fischer (UWisconsin - Madison) | PLDI 1991, p. 256 |
| [GooHsu88] | Code Scheduling and Register Allocation in Large Basic Blocks | Goodman, Hsu | Supercomputing 1988, p. 442 |
| [BEH91] | Integrating Register Allocation and Instruction Scheduling for RISCs | Bradlee, Eggers, Henry (UWashington) | ASPLOS 1991, p. 122 |
| [BHE91] | The Marion System for Retargetable Instruction Scheduling | Bradlee, Henry, Eggers (UWashington) | PLDI 1991, p. 229 |
| [BeRo91] | Global Instruction Scheduling for Superscalar Machines | Bernstein, Rodeh | PLDI 1991, p. 241 |
| [RGSL96] | Software Pipelining Showdown: Optimal vs. Heuristic Methods in a Production Compiler | Ruttenberg, Gao, Stoutchinin, Lichtenstein (McGill) | PLDI 1996, p. 1 |
Cache Scheduling | |||
| [HKC97] | Efficient Procedure Mapping Using Cache Line Coloring | Hashemi, Kaeli, Calder | PLDI 1997, p. 171 |
| [YJKS97] | Near-Optimal Intraprocedural Branch Alignment | Young, Johnson, Karger, Smith | PLDI 1997, p. 183 |
Cross-Platform Assembly | |||
| [RaFe95] | The New Jersey Machine-Code Toolkit | Ramsey, Fernandez | Usenix 1995, p. 289 |
Dynamic Code Generation | |||
| [Engler96] | VCODE: A Retargetable, Extensible, Very Fast Dynamic Code Generation System | Engler (MIT) | PLDI 1996, p. 160 |
| [LDG95] | Clarity MCode: A Retargetable Intermediate Representation for Compilation | Lewis, Deutsch, Goldstein | IR 1995, p. 119 |
| [EHK96] | 'C: A Language for High-Level, Efficient, and Machine-Independent Dynamic Code Generation | Engler, Hsieh, Kaashoek (MIT) | POPL 1996, 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 1997, p. 109 |
| [EngProe94] | DCG: An Efficient, Retargetable Dynamic Code Generation System | Engler, Proebsting | ASPLOS 1994, p. 263 |
| [Morris91] | CCG: A Prototype Coagulating Code Generator | Morris | PLDI 1991, p. 45 |
| [CoNoë96] | A General Approach for Run-Time Specialization and its Application to C | Consel, Noël | POPL 1996, p. 145 |
| [Wall92] | Systems for Late Code Modification | Wall (Digital) | WRL report 1992-3 |
| [Franz94] | Code-Generation On-the-Fly: A Key to Portable Software | Franz (Zürich) | PhD thesis 1994 |
| [KEH91] | A Case for Runtime Code Generation | Keppel, Eggers, Henry (U Washington) | TR 1991-11-04 |
| [Keppel91] | A Portable Interface for On-The-Fly Instruction Space Modification | Keppel (U Washington) | ASPLOS 1991, p. 86 |
| [KEH93] | Evaluating Runtime-Compiled Value-Specific Optimizations | Keppel, Eggers, Henry (U Washington) | TR 1993-11-02 |
| [KeRu93] | Faster Dynamic Linking for SPARC V8 and System V.4 | Keppel, Russell (U Washington) | TR 1993-12-08 |
Miscellaneous | |||
Data Structures | |||
| [BriTo93] | An Efficient Representation for Sparse Sets | Preston Briggs, Linda Torczon | LOPLAS 2:1, Mar 1993, p. 59 |
Numerics | |||
| [Clinger90] | How to Read Floating Point Numbers Accurately | William Clinger | PLDI 1990, p. 92-101 |
| [SteWhi90] | How to Print Floating-Point Numbers Accurately | Guy Steele, Jon White | PLDI 1990, p. 112-123 |
| [Gay90] | Correctly Rounded Binary-Decimal and Decimal-Binary Conversions | David Gay | AT&T Bell Labs Numerical Analysis Manuscript 90-10 |
| [Hanson97] | Economical Correctly Rounded Binary Decimal Conversions | Kenton Hanson | http://www.dnai.com/~khanson/ECRBDC.html |