Bibliography |
Thursday, September 27, 2001
Below are some interesting papers related to compilers and programming languages that Waldemar has seen.
Languages | |||
Language Design | |||
[Steele98] | Growing a Language | Guy Steele | OOPSLA 1998 keynote |
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 |
[FiMi98] | On the Relationship between Classes, Objects and Data Abstraction | Kathleen Fisher, John Mitchell | Theory and Practice of Object Systems 4:1, 1998, p. 3-32 |
[FiMi96] | The Development of Type Systems for Object-Oriented Languages | Kathleen Fisher, John Mitchell | Theory and Practice of Object Systems 1:3, 1996, p. 189-220 |
[WriCa97] | A Practical Soft Type System for Scheme | Andrew Wright, Robert Cartwright | TOPLAS 19:1, January 1997, p. 87-152 |
[FFA99] | A Theory of Type Qualifiers | Jeffrey Foster, Manuel Fähndrich, Alexander Aiken | PLDI 1999, p. 192-203 |
Semantics | |||
[Mitchell96] | Foundations for Programming Languages | John Mitchell | MIT Press 1996 |
[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 |
Threading | |||
[Pugh00] | The Java Memory Model is Fatally Flawed | William Pugh | Concurrency: Practice and Experience 12:6, May 2000, p. 445-455 |
[MaPu01] | Semantics of Multithreaded Java | Jeremy Manson, William Pugh | 2001 (internet article) |
[Pugh] | The Java Memory Model | William Pugh | http://www.cs.umd.edu/~pugh/java/memoryModel/ |
[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 |
[ISOC++] | Programming languages -- C++ | ISO/IEC International Standard | ISO/IEC 14882: 1998 |
[Stroustrup97] | The C++ Programming Language, 3rd Ed. | Bjarne Stroustrup | Addison-Wesley 1997 |
[Meyers92] | Effective C++ | Scott Meyers | Addison-Wesley 1992 |
[Meyers96] | More Effective C++ | Scott Meyers | Addison-Wesley 1996 |
[KoeMoo97] | Ruminations on C++ | Andrew Koenig, Barbara Moo | Addison-Wesley 1997 |
[Sutter00] | Exceptional C++ | Herb Sutter | Addison-Wesley 2000 |
Miscellaneous 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 |
[Steele90] | Common Lisp: The Language, 2nd Ed. | Guy Steele | Digital Press 1990 |
[KRB91] | The Art of the Metaobject Protocol | Gregor Kiczales, Jim des Rivières, Daniel Bobrow | MIT Press 1991 |
[Shalit96] | The Dylan Reference Manual | Andrew Shalit | Addison Wesley 1996 |
[Apple92] | Dylan: An Object-Oriented Dynamic Language | Apple computer | 1992 |
[Haskell99] | Report on the Programming Language Haskell 98 | Simon Peyton Jones, John Hughes, Lennart Augustsson, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, Paul Hudak, Thomas Johnsson, Mark Jones, John Launchbury, Erik Meijer, John Peterson, Alastair Reid, Colin Runciman, Philip Wadler | http://www.haskell.org/definition, February 1999 |
[Thompson99] | Haskell: The Craft of Functional Programming, 2nd Edition | Simon Thompson | Addison-Wesley 1999 |
[CDGJKN89] | Modula-3: Language definition | Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, Greg Nelson | Digital 1989 |
[Cow97] | The NetRexx Language | Michael Cowlishaw | 1997 |
[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 |
[Blaschek94] | Object-Oriented Programming with Prototypes | Günther Blaschek | Springer-Verlag 1994 |
[WCS96] | Programming Perl, 2nd Ed. | Larry Wall, Tom Christiansen, Randal Schwartz | O'Reilly 1996 |
[Friedl97] | Mastering Regular Expressions | Jeffrey Friedl | O'Reilly 1997 |
[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 |
[KCR98] | Revised5 Report on the Algorithmic Language Scheme | Richard Kelsey, William Clinger, Jonathan Rees | ACM SIGPLAN Notices, 33:9, September 1998, p. 26-76 |
[Raggett98] | Adding Style and Behaviour to XML Pages with a dash of Spice | Dave Raggett | http://www.w3.org/People/Raggett/Spice/ECMA/Spice-paper.html, 1998 |
[DoLea98] | A gentle (but very rapid) introduction to Spice, v1.3 | Chris Dollin, Steve Leach | http://www.w3.org/People/Raggett/Spice/ECMA/chatty.html, Sep 23, 1998 |
[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 |
[DeLiFä01] | Enforcing High-Level Protocols in Low-Level Software | Robert DeLine, Manuel Fähndrich | PLDI 2001, p. 59-69 |
[Lomax98] | VB & VBA in a Nutshell | Paul Lomax | O'Reilly 1998 |
[KiMa98] | WebL -- A Programming Language for the Web | Thomas Kistler, Hannes Marais | WWW7 conference, 1998 |
[Marais99] | WebL -- A Programming Language for the Web | Hannes Marais | User manual version 3.0, 1999 |
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 |
Memory Management | |||
[JoWi98] | The Memory Fragmentation Problem: Solved? | Mark Johnstone, Paul Wilson | International Symposium on Memory Management 1998, p. 26-36 |
[Lea] | A Memory Allocator | Doug Lea | http://gee.cs.oswego.edu/dl/html/malloc.html |
[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 |
[Unicode20] | The Unicode Standard, Version 2.0 | The Unicode Consortium | Addison-Wesley 1996 |
[Unicode21] | The Unicode Standard, Version 2.1 | Lisa Moore | Unicode Technical Report #8, 1998 |
[Unicode30] | The Unicode Standard, Version 3.0 | The Unicode Consortium | http://www.unicode.org/unicode/standard/versions/Unicode3.0.html |
[DaDü98] | Unicode Normalization Forms | Mark Davis, Martin Dürst | Unicode Technical Report #15, 1998 |
[Oppen80] | Prettyprinting | Derek Oppen | TOPLAS 2:4, Oct 1980, p. 465-483 |
[Waters89] | XP: A Common Lisp Pretty Printing System | Richard Waters | MIT AI Memo 1102, Mar 1989 |
[Waters90] | Pretty Printing | Richard Waters | Chapter 27 of [Steele90] |
[FooYo96] | The Selfish Class | Brian Foote, Joseph Yoder | Third Pattern Languages of Programming Conference, 1996 |
[FooYo97] | Big Ball of Mud | Brian Foote, Joseph Yoder | Fourth Pattern Languages of Programming Conference, 1997 |
Waldemar Horwat Last modified Thursday, September 27, 2001 |