Bibliography |
|
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 | Cardelli | ACM Computing Surveys 28, Article 150, 1996 |
Theory | |||
Type Systems | |||
| [AbCa96] | A Theory of Objects | Abadi, Cardelli | Springer 1996 |
Semantics | |||
| [Schmidt86] | Denotational Semantics: A Methodology for Language Development | Schmidt | Allyn and Bacon 1986 |
| [SloKu95] | Formal Syntax and Semantics of Programming Languages | Slonneger, Kurtz | Addison-Wesley 1995 |
Effects | |||
| [GJS90] | Report on the FX-90 Programming Language | Gifford, Jouvelot, Sheldon | MIT memo 1990 |
| [GJSOT91] | Report on the FX-91 Programming Language | Gifford, Jouvelot, Sheldon, O'Toole | 1991 MIT LCS TR-531 |
| [Lucassen87] | Types and Effects: Towards the Integration of Functional and Imperative Programming | Lucassen | 1987 MIT LCS TR-408 |
Object Architectures | |||
CORBA | |||
| [Siegel96] | CORBA Fundamentals and Programming | Siegel | Wiley 1996 |
COM | |||
| [Box98] | Essential COM | Box | Addison-Wesley 1998 |
| [Redmond97] | DCOM: Microsoft Distributed Component Object Model | Redmond | IDG Books 1997 |
| [Kirtland97a] | Object-Oriented Software Development Made Simple with COM+ Runtime Services | Kirtland | MSJ 12:11, Nov 1997, p. 49 |
| [Kirtland97b] | The COM+ Programming Model Makes it Easy to Write Components in any Language | Kirtland | MSJ 12:12, Dec 1997, p. 19 |
JavaScript | |||
| [Flanagan98] | JavaScript: The Definitive Guide, 3rd Ed. | Flanagan | O'Reilly 1998 |
| [ECMA262] | ECMAScript Language Specification | ISO/IEC Standard 16262 | ISO/ECMA 1998 |
Java | |||
Java Manuals | |||
| [ArGo96] | The Java Programming Language | Arnold, Gosling | 1996 |
| [GJS96] | The Java Language Specification | Gosling, Joy, Steele | 1996 |
| [LiYe97] | The Java Virtual Machine Specification | Lindholm, Yellin | 1997 |
| [GoYe96a] | The Java Application Programming Interface, Vol 1: Core Packages | Gosling, Yellin | 1996 |
| [GoYe96b] | The Java Application Programming Interface, Vol 2: Window Toolkit and Applets | Gosling, Yellin | 1996 |
Java Variants | |||
| [MBL97] | Parametrized Types for Java | Myers, Bank, Liskov (MIT) | POPL 1997, p. 132 |
| [MBL97] | Pizza into Java: Translating Theory into Practice | Odersky, Wadler | POPL 1997, p. 146 |
| [Golliver97a] | First-Implementation Artifacts in Java | Golliver | Intel 1997 |
| [Golliver97b] | The Ivory Brand of Java | Golliver | Intel 1997 |
Miscellaneous Languages | |||
| [WCS96] | Programming Perl, 2nd Ed. | Wall, Christiansen, Schwartz | O'Reilly 1996 |
| [Friedl97] | Mastering Regular Expressions | Friedl | O'Reilly 1997 |
| [Lomax98] | VB & VBA in a Nutshell | Lomax | O'Reilly 1998 |
| [Cow97] | The NetRexx Language | Cowlishaw | 1997 |
| [Steele90] | Common Lisp: The Language, 2nd Ed. | Steele | Digital Press 1990 |
| [Apple92] | Dylan: An Object-Oriented Dynamic Language | Apple computer | 1992 |
Module Systems | |||
| [CuRau90] | A Module System for Scheme | Curtis, Rauen | 1990 ACM Conf. on Lisp and Funct. Prog., p. 13 |
| [CliRee90] | Macros that Work | Clinger, Rees | POPL 1990, p. 155 |
Assembly Languages | |||
| [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 | Hoxey, Karim, Hay, Warren | 1996 MPRPPCOMP-01 |
| [Heinrich93] | MIPS R4000 User's Manual | 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 | 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, 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, Chambers (U Washington) | 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 |
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 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 | Weise, Crew, Ernst, Steensgaard (Microsoft) | POPL 1994, p. 297 |
| [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 |