Skip to main content

Compiler generation for interactive graphics using intermediate code

  • Conference paper
  • First Online:
Book cover Partial Evaluation

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1110))

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A V Aho, R Sethi, J D Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley 1986.

    Google Scholar 

  2. Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. DIKU 1994.

    Google Scholar 

  3. Andrew Appel. Compiling with Continuations. Cambridge University Press 1992.

    Google Scholar 

  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. William Clinger, Jonathan Rees. Revised4 Report on the Algorithmic Language Scheme. LISP PointersIV:1–55.

    Google Scholar 

  6. Charles Consel. Binding Time Analysis for Higher Order Untyped Functional Languages. ACM Conference on Lisp and Functional Programming, 1990.

    Google Scholar 

  7. Charles Consel. New Insights into Partial Evaluation: The Schism Experiment. European Symposium on Programming, 1988.

    Google Scholar 

  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. N Dershowitz, U Reddy. Deductive and Inductive Synthesis of Equational Programs. Journal of Symbolic Computation15:467–494.

    Google Scholar 

  10. DOOM. id Software 1993.

    Google Scholar 

  11. Scott Draves. Lightweight Languages for Interactive Graphics. CMU-CS-95-148.

    Google Scholar 

  12. Fnord: a Visualization System for Differential Geometry. Brown University 1991.

    Google Scholar 

  13. Cellang. ? 1995.

    Google Scholar 

  14. Dawson Englar, Todd Proebsting. DCG: An Efficient, Retargetable Dynamic Code Generation System. ASPLOS, 1994.

    Google Scholar 

  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. Foley, Feiner, Andries van Dam, John Hughes. Computer Graphics: Principles and Practice. Addison-Wesley 1990.

    Google Scholar 

  17. Daniel P Friedman, Mitchell Wand. Reification: Reflection without Metaphysics. ACM Conference on Lisp and Functional Programming, 1984.

    Google Scholar 

  18. R Glück, J Jørgensen. Generating Optimizing Specializes. IEEE Computer Society International Conference on Computer Languages, 1994.

    Google Scholar 

  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. 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. Fritz Henglein. Efficient Type Inference for Higher-Order Binding-Time Analysis. International Conference on Functional Programming Languages and Computer Architecture, 1991.

    Google Scholar 

  22. John L Hennessy, David A Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann 1990.

    Google Scholar 

  23. Susan Horwitz, Thomas Reps. The Use of Program Dependence Graphs in Software Engineering. ICSE, 1992.

    Google Scholar 

  24. Adobe Systems, Inc. PostScript Language Reference Manual. Addison-Wesley 1990.

    Google Scholar 

  25. IRIS Explorer. Numerical Algorithms Group, Ltd 1995.

    Google Scholar 

  26. Ulric Jørring, William Scherlis. Compilers and Staging Transformations. Principles of Programming Languages, 1986.

    Google Scholar 

  27. Stephen C Johnson. YACC — Yet Another Compiler-Compiler. Bell Labs 1975.

    Google Scholar 

  28. N Jones, C K Gomard, P Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall 1993.

    Google Scholar 

  29. Simon L Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall 1987.

    Google Scholar 

  30. Richard Kelsey, Jonathan Rees. A Tractable Scheme Implementation. Lisp and Symbolic Computation?:?.

    Google Scholar 

  31. Richard Kelsey. Pre-Scheme: A Scheme Dialect for Systems Programming. ?.

    Google Scholar 

  32. D Keppel, S J Eggers, R R Henry. A Case for Runtime Code Generation. UW-CSE-91-11-04.

    Google Scholar 

  33. D Keppel, S J Eggers, R R Henry. Evaluating Runtime-Compiled Value-Specific Optimizations. UW-CSE-91-11-04.

    Google Scholar 

  34. Gregor Kiczales. Towards a New Model of Abstraction in the Engineering of Software. IMSA, 1992.

    Google Scholar 

  35. Mark Leone, Peter Lee. Lightweight Run-Time Code Generation. Partial Evaluation and Semantics-Based Program Manipulation, 1994.

    Google Scholar 

  36. Henry Massalin. Efficient Implementation of Fundamental Operating System Services. Columbia 1992.

    Google Scholar 

  37. Torben Mogensen. Binding Time Aspects of Partial Evaluation. DIKU 1989.

    Google Scholar 

  38. John Moussouris, Craig Hansen. Architecture of a Broadband Media Processor. Microprocessor Forum?:?.

    Google Scholar 

  39. Netscape Navigator. Netscape Communications Corporation 1995.

    Google Scholar 

  40. John Ousterhout. Tcl and the Tk Toolkit. Addison-Wesley 1994.

    Google Scholar 

  41. Frank Pfenning. Logic Programming in the LF Logical Framework. Logical Frameworks, 1991.

    Google Scholar 

  42. PhotoShop 3.0. Adobe Systems, Inc 1995.

    Google Scholar 

  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. QuickDraw GX. Apple Computer, Inc 1995.

    Google Scholar 

  45. ScriptX. Kaleida Labs, Inc 1995.

    Google Scholar 

  46. Jay M Sipelstein, Guy E Blelloch. Collection-Oriented Languages. Proceedings of the IEEE?:?.

    Google Scholar 

  47. Richard L Sites. Alpha AXP architecture. CACM36:?.

    Google Scholar 

  48. Colusa Software. Omniware: A Universal Substrate for Mobile Code. WWW, 1995.

    Google Scholar 

  49. R M Stallman. Using and Porting GNU CC. Free Software Foundation 1989.

    Google Scholar 

  50. Richard Stallman. GNU Emacs Manual. Free Software Foundation 1987.

    Google Scholar 

  51. Guy Steele. Common Lisp the Language. Digital Press 1990.

    Google Scholar 

  52. Steve Upstill. The RenderMan Companion: A Programmer's Guide to Realistic Computer Graphics. Addison-Wesley 1989.

    Google Scholar 

  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. Visual Basic v3.0 for Windows. Microsoft 1995.

    Google Scholar 

  55. Michael Wolf, Monica Lam. A Data Locality Optimizing Algorithm. Conference on Programming Language Design and Implementation, 1991.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Olivier Danvy Robert Glück Peter Thiemann

Rights and permissions

Reprints and permissions

Copyright information

© 1996 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Draves, S. (1996). Compiler generation for interactive graphics using intermediate code. In: Danvy, O., Glück, R., Thiemann, P. (eds) Partial Evaluation. Lecture Notes in Computer Science, vol 1110. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-61580-6_6

Download citation

  • DOI: https://doi.org/10.1007/3-540-61580-6_6

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-61580-4

  • Online ISBN: 978-3-540-70589-5

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics