Compiler generation for interactive graphics using intermediate code

  • Scott Draves
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1110)


This paper describes a compiler generator (cogen) designed for interactive graphics, and presents preliminary results of its application to pixel-level code. The cogen accepts and produces a reflective intermediate code in continuation-passing, closure-passing style. This allows low overhead run-time code generation as well as multi-stage compiler generation. We extend partial evaluation techniques by allowing partially static integers, conservative early equality, and unrestricted lifting. In addition to some standard examples, we examine graphics kernels such as one-dimensional finite filtering and packed pixel access.


Partial Evaluation Interactive Graphic Graphic Kernel Binding Time Intermediate Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    A V Aho, R Sethi, J D Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley 1986.Google Scholar
  2. 2.
    Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. DIKU 1994.Google Scholar
  3. 3.
    Andrew Appel. Compiling with Continuations. Cambridge University Press 1992.Google Scholar
  4. 4.
    A Bondorf, O Danvy. Automatic Autoprojection of Recursive Equations with Global Variables and Abstract Data Types. Science of Computer Programming16:151–195.Google Scholar
  5. 5.
    William Clinger, Jonathan Rees. Revised4 Report on the Algorithmic Language Scheme. LISP PointersIV:1–55.Google Scholar
  6. 6.
    Charles Consel. Binding Time Analysis for Higher Order Untyped Functional Languages. ACM Conference on Lisp and Functional Programming, 1990.Google Scholar
  7. 7.
    Charles Consel. New Insights into Partial Evaluation: The Schism Experiment. European Symposium on Programming, 1988.Google Scholar
  8. 8.
    Charles Consel, Luke Hornof, Francois NoËl, Jacque Noyé, Nicolae Volanschi. A Uniform Approach for Compile-Time and Run-Time Specialization. Dagstuhl Workshop on Partial Evaluation, 1996.Google Scholar
  9. 9.
    N Dershowitz, U Reddy. Deductive and Inductive Synthesis of Equational Programs. Journal of Symbolic Computation15:467–494.Google Scholar
  10. 10.
    DOOM. id Software 1993.Google Scholar
  11. 11.
    Scott Draves. Lightweight Languages for Interactive Graphics. CMU-CS-95-148.Google Scholar
  12. 12.
    Fnord: a Visualization System for Differential Geometry. Brown University 1991.Google Scholar
  13. 13.
    Cellang. ? 1995.Google Scholar
  14. 14.
    Dawson Englar, Todd Proebsting. DCG: An Efficient, Retargetable Dynamic Code Generation System. ASPLOS, 1994.Google Scholar
  15. 15.
    Dawson Engler, Wilson Hsieh, M Frans Kaashoek. 'C: A Language for High-Level, Efficient, and Machine-independent Dynamic Code Generation. Conference on Programming Language Design and Implementation, 1995.Google Scholar
  16. 16.
    Foley, Feiner, Andries van Dam, John Hughes. Computer Graphics: Principles and Practice. Addison-Wesley 1990.Google Scholar
  17. 17.
    Daniel P Friedman, Mitchell Wand. Reification: Reflection without Metaphysics. ACM Conference on Lisp and Functional Programming, 1984.Google Scholar
  18. 18.
    R Glück, J Jørgensen. Generating Optimizing Specializes. IEEE Computer Society International Conference on Computer Languages, 1994.Google Scholar
  19. 19.
    R Glück, J Jørgensen. Efficient Multi-Level Generating Extensions for Program Specialization. Programming Language Implementation and Logic Programming, 1995.Google Scholar
  20. 20.
    L G C Hamey, J A Webb, I-Chien Wu. An Architecture Independent Programming Language for Low-Level Vision. Computer Vision, Graphics, and Image Processing 48?:.Google Scholar
  21. 21.
    Fritz Henglein. Efficient Type Inference for Higher-Order Binding-Time Analysis. International Conference on Functional Programming Languages and Computer Architecture, 1991.Google Scholar
  22. 22.
    John L Hennessy, David A Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann 1990.Google Scholar
  23. 23.
    Susan Horwitz, Thomas Reps. The Use of Program Dependence Graphs in Software Engineering. ICSE, 1992.Google Scholar
  24. 24.
    Adobe Systems, Inc. PostScript Language Reference Manual. Addison-Wesley 1990.Google Scholar
  25. 25.
    IRIS Explorer. Numerical Algorithms Group, Ltd 1995.Google Scholar
  26. 26.
    Ulric Jørring, William Scherlis. Compilers and Staging Transformations. Principles of Programming Languages, 1986.Google Scholar
  27. 27.
    Stephen C Johnson. YACC — Yet Another Compiler-Compiler. Bell Labs 1975.Google Scholar
  28. 28.
    N Jones, C K Gomard, P Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall 1993.Google Scholar
  29. 29.
    Simon L Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall 1987.Google Scholar
  30. 30.
    Richard Kelsey, Jonathan Rees. A Tractable Scheme Implementation. Lisp and Symbolic Computation?:?.Google Scholar
  31. 31.
    Richard Kelsey. Pre-Scheme: A Scheme Dialect for Systems Programming. ?.Google Scholar
  32. 32.
    D Keppel, S J Eggers, R R Henry. A Case for Runtime Code Generation. UW-CSE-91-11-04.Google Scholar
  33. 33.
    D Keppel, S J Eggers, R R Henry. Evaluating Runtime-Compiled Value-Specific Optimizations. UW-CSE-91-11-04.Google Scholar
  34. 34.
    Gregor Kiczales. Towards a New Model of Abstraction in the Engineering of Software. IMSA, 1992.Google Scholar
  35. 35.
    Mark Leone, Peter Lee. Lightweight Run-Time Code Generation. Partial Evaluation and Semantics-Based Program Manipulation, 1994.Google Scholar
  36. 36.
    Henry Massalin. Efficient Implementation of Fundamental Operating System Services. Columbia 1992.Google Scholar
  37. 37.
    Torben Mogensen. Binding Time Aspects of Partial Evaluation. DIKU 1989.Google Scholar
  38. 38.
    John Moussouris, Craig Hansen. Architecture of a Broadband Media Processor. Microprocessor Forum?:?.Google Scholar
  39. 39.
    Netscape Navigator. Netscape Communications Corporation 1995.Google Scholar
  40. 40.
    John Ousterhout. Tcl and the Tk Toolkit. Addison-Wesley 1994.Google Scholar
  41. 41.
    Frank Pfenning. Logic Programming in the LF Logical Framework. Logical Frameworks, 1991.Google Scholar
  42. 42.
    PhotoShop 3.0. Adobe Systems, Inc 1995.Google Scholar
  43. 43.
    Rob Pike, Bart Locanthi, John Reiser. Hardware/Software Trade-offs for Bitmap Graphics on the Blit. Software-Practice and Experience15:131–151.Google Scholar
  44. 44.
    QuickDraw GX. Apple Computer, Inc 1995.Google Scholar
  45. 45.
    ScriptX. Kaleida Labs, Inc 1995.Google Scholar
  46. 46.
    Jay M Sipelstein, Guy E Blelloch. Collection-Oriented Languages. Proceedings of the IEEE?:?.Google Scholar
  47. 47.
    Richard L Sites. Alpha AXP architecture. CACM36:?.Google Scholar
  48. 48.
    Colusa Software. Omniware: A Universal Substrate for Mobile Code. WWW, 1995.Google Scholar
  49. 49.
    R M Stallman. Using and Porting GNU CC. Free Software Foundation 1989.Google Scholar
  50. 50.
    Richard Stallman. GNU Emacs Manual. Free Software Foundation 1987.Google Scholar
  51. 51.
    Guy Steele. Common Lisp the Language. Digital Press 1990.Google Scholar
  52. 52.
    Steve Upstill. The RenderMan Companion: A Programmer's Guide to Realistic Computer Graphics. Addison-Wesley 1989.Google Scholar
  53. 53.
    J E Veenstra, R J Fowler. MINT: a front end for efficient simulation of shared-memory multiprocessors. Modeling and Simulation of Computers and Tlecommunications Systems, 1994.Google Scholar
  54. 54.
    Visual Basic v3.0 for Windows. Microsoft 1995.Google Scholar
  55. 55.
    Michael Wolf, Monica Lam. A Data Locality Optimizing Algorithm. Conference on Programming Language Design and Implementation, 1991.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Scott Draves
    • 1
  1. 1.School of Computer ScienceCarnegie Mellon UniversityPitsburghUSA

Personalised recommendations