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.
Keywords
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.
This is a preview of subscription content, log in via an institution.
Preview
Unable to display preview. Download preview PDF.
References
A V Aho, R Sethi, J D Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley 1986.
Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. DIKU 1994.
Andrew Appel. Compiling with Continuations. Cambridge University Press 1992.
A Bondorf, O Danvy. Automatic Autoprojection of Recursive Equations with Global Variables and Abstract Data Types. Science of Computer Programming16:151–195.
William Clinger, Jonathan Rees. Revised4 Report on the Algorithmic Language Scheme. LISP PointersIV:1–55.
Charles Consel. Binding Time Analysis for Higher Order Untyped Functional Languages. ACM Conference on Lisp and Functional Programming, 1990.
Charles Consel. New Insights into Partial Evaluation: The Schism Experiment. European Symposium on Programming, 1988.
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.
N Dershowitz, U Reddy. Deductive and Inductive Synthesis of Equational Programs. Journal of Symbolic Computation15:467–494.
DOOM. id Software 1993.
Scott Draves. Lightweight Languages for Interactive Graphics. CMU-CS-95-148.
Fnord: a Visualization System for Differential Geometry. Brown University 1991.
Cellang. ? 1995.
Dawson Englar, Todd Proebsting. DCG: An Efficient, Retargetable Dynamic Code Generation System. ASPLOS, 1994.
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.
Foley, Feiner, Andries van Dam, John Hughes. Computer Graphics: Principles and Practice. Addison-Wesley 1990.
Daniel P Friedman, Mitchell Wand. Reification: Reflection without Metaphysics. ACM Conference on Lisp and Functional Programming, 1984.
R Glück, J Jørgensen. Generating Optimizing Specializes. IEEE Computer Society International Conference on Computer Languages, 1994.
R Glück, J Jørgensen. Efficient Multi-Level Generating Extensions for Program Specialization. Programming Language Implementation and Logic Programming, 1995.
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?:.
Fritz Henglein. Efficient Type Inference for Higher-Order Binding-Time Analysis. International Conference on Functional Programming Languages and Computer Architecture, 1991.
John L Hennessy, David A Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann 1990.
Susan Horwitz, Thomas Reps. The Use of Program Dependence Graphs in Software Engineering. ICSE, 1992.
Adobe Systems, Inc. PostScript Language Reference Manual. Addison-Wesley 1990.
IRIS Explorer. Numerical Algorithms Group, Ltd 1995.
Ulric Jørring, William Scherlis. Compilers and Staging Transformations. Principles of Programming Languages, 1986.
Stephen C Johnson. YACC — Yet Another Compiler-Compiler. Bell Labs 1975.
N Jones, C K Gomard, P Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall 1993.
Simon L Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall 1987.
Richard Kelsey, Jonathan Rees. A Tractable Scheme Implementation. Lisp and Symbolic Computation?:?.
Richard Kelsey. Pre-Scheme: A Scheme Dialect for Systems Programming. ?.
D Keppel, S J Eggers, R R Henry. A Case for Runtime Code Generation. UW-CSE-91-11-04.
D Keppel, S J Eggers, R R Henry. Evaluating Runtime-Compiled Value-Specific Optimizations. UW-CSE-91-11-04.
Gregor Kiczales. Towards a New Model of Abstraction in the Engineering of Software. IMSA, 1992.
Mark Leone, Peter Lee. Lightweight Run-Time Code Generation. Partial Evaluation and Semantics-Based Program Manipulation, 1994.
Henry Massalin. Efficient Implementation of Fundamental Operating System Services. Columbia 1992.
Torben Mogensen. Binding Time Aspects of Partial Evaluation. DIKU 1989.
John Moussouris, Craig Hansen. Architecture of a Broadband Media Processor. Microprocessor Forum?:?.
Netscape Navigator. Netscape Communications Corporation 1995.
John Ousterhout. Tcl and the Tk Toolkit. Addison-Wesley 1994.
Frank Pfenning. Logic Programming in the LF Logical Framework. Logical Frameworks, 1991.
PhotoShop 3.0. Adobe Systems, Inc 1995.
Rob Pike, Bart Locanthi, John Reiser. Hardware/Software Trade-offs for Bitmap Graphics on the Blit. Software-Practice and Experience15:131–151.
QuickDraw GX. Apple Computer, Inc 1995.
ScriptX. Kaleida Labs, Inc 1995.
Jay M Sipelstein, Guy E Blelloch. Collection-Oriented Languages. Proceedings of the IEEE?:?.
Richard L Sites. Alpha AXP architecture. CACM36:?.
Colusa Software. Omniware: A Universal Substrate for Mobile Code. WWW, 1995.
R M Stallman. Using and Porting GNU CC. Free Software Foundation 1989.
Richard Stallman. GNU Emacs Manual. Free Software Foundation 1987.
Guy Steele. Common Lisp the Language. Digital Press 1990.
Steve Upstill. The RenderMan Companion: A Programmer's Guide to Realistic Computer Graphics. Addison-Wesley 1989.
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.
Visual Basic v3.0 for Windows. Microsoft 1995.
Michael Wolf, Monica Lam. A Data Locality Optimizing Algorithm. Conference on Programming Language Design and Implementation, 1991.
Author information
Authors and Affiliations
Editor information
Rights 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