David R. Hanson

Home · Vita · Publications · Software


A Retargetable C Compiler: Design and Implementation, Addison-Wesley, Redwood City, CA, 1995 (with C. W. Fraser). Buy from Amazon

C Interfaces and Implementations: Techniques for Creating Reusable Software, Addison-Wesley, Menlo Park, CA, 1997. Buy from Amazon


A Simple Technique for Representing Strings in Fortran IV, Communications of the ACM 17 (11), 646-647, Nov. 1974. PDF (217KB).

A Simple Variant of the Boundary-Tag Algorithm for the Allocation of Coroutine Environments, Information Processing Letters 4 (4), 109-112, Jan. 1976. PDF (340KB).

Variable Associations in SNOBOL4, Software—Practice and Experience 6 (2), 245-254, Apr. 1976. PDF (608KB).

Storage Management for an Implementation of SNOBOL4, Software—Practice and Experience 7 (2), 179-192, Mar. 1977. PDF (1604KB).

RATSNO—An Experiment in Software Adaptability, Software—Practice and Experience 7 (5), 625-630, Sep. 1977. PDF (339KB).

Performance of Storage Management in an Implementation of SNOBOL4, IEEE Transactions on Software Engineering SE-4 (2), 130-137, Mar. 1978 (with G. D. Ripley and R. E. Griswold). PDF (1168KB).

Event Associations in SNOBOL4 for Program Debugging, Software—Practice and Experience 8 (2), 115-129, Mar. 1978. PDF (981KB).

The SL5 Procedure Mechanism, Communications of the ACM 21 (5), 392-400, May 1978 (with R. E. Griswold). PDF (876KB).

Filters in SL5, The Computer Journal 21 (2), 134-143, May 1978. PDF (1744KB).

Data Structures in SL5, Journal of Computer Languages 3 (3), 181-192, Oct. 1978. PDF (2168KB).

A Simple Technique for Controlled Communication Among Separately Compiled Modules, Software—Practice and Experience 9 (11), 921-924, Nov. 1979. PDF (257KB).

An Alternative to the Use of Patterns in String Processing, ACM Transactions on Programming Languages and Systems 2 (2), 153-172, Apr. 1980 (with R. E. Griswold). PDF (1217KB).

A Portable Storage Management System for the Icon Programming Language, Software—Practice and Experience 10 (6), 489-500, June 1980. PDF (677KB).

A Portable File Directory System, Software—Practice and Experience 10 (8), 623-634, Aug. 1980. PDF (707KB).

Code Improvement via Lazy Evaluation, Information Processing Letters 11 (4-5), 163-167, Dec. 1980. PDF (762KB).

Generators in Icon, ACM Transactions on Programming Languages and Systems 3 (2), 144-161, Apr. 1981 (with R. E. Griswold and J. T. Korb). PDF (1070KB).

Algorithm 568: PDS—A Portable Directory System, ACM Transactions on Programming Languages and Systems 3 (2), 162-167, Apr. 1981. PDF (305KB).

Is Block Structure Necessary?, Software—Practice and Experience 11 (8), 853-866, Aug. 1981. PDF (794 KB).

A Machine-Independent Linker, Software—Practice and Experience 12 (4), 351-366, Apr. 1982 (with C. W. Fraser). Errata: PDF (21KB), Full paper w/errata: PDF (1041KB).

Exploiting Machine-Specific Pointer Operations in Abstract Machines, Software—Practice and Experience 12 (4), 367-373, Apr. 1982 (with C. W. Fraser). PDF (992KB).

Measuring the Performance and Behavior of Icon Programs, IEEE Transactions on Software Engineering SE-9 (1), 93-103, Jan. 1983 (with C. A. Coutant and R. E. Griswold). PDF (3240KB).

A Portable Input/Output System, Software—Practice and Experience 13 (1), 95-100, Jan. 1983. PDF (493KB).

Simple Code Optimizations, Software—Practice and Experience 13 (9), 745-764, Aug. 1983. PDF (1125 KB).

Compact Recursive-Descent Parsing of Expressions, Software—Practice and Experience 15 (12), 1205-1212, Dec. 1985. PDF (412 KB).

Optimization of Argument Evaluation Order, Information Processing Letters 26 (6), 391-395, Apr. 1987 (with C. W. Fraser). PDF (856KB).

Fast Allocation and Deallocation of Memory Based on Object Lifetimes, Software—Practice and Experience 20 (1), 5-12, Jan. 1990. Errata: PDF (9KB), Full paper w/errata: PDF (497KB).

A Code Generation Interface for ANSI C, Software—Practice and Experience 21 (9), 963-988, Sep. 1991 (with C. W. Fraser). PDF (126 KB).

Simple Register Spilling in a Retargetable Compiler, Software—Practice and Experience 22 (1), 85-99, Jan. 1992 (with C. W. Fraser). PDF (63KB).

Garbage Collection Alternatives for Icon, Software—Practice and Experience 22 (8), 659-672, Aug. 1992 (with M. F. Fernandez). PDF (91KB).

Engineering a Simple, Efficient Code Generator Generator, ACM Letters on Programming Languages and Systems 1 (3), 213-226, Sep. 1992 (with C. W. Fraser and T. A. Proebsting). PDF (854KB). http://code.google.com/p/iburg

A Machine-Independent Debugger, Software—Practice and Experience 26 (11), 1277-1299, Nov. 1996 (with M. Raghavachari). PDF (350KB), Talk slides: PDF (110KB). http://code.google.com/p/cdb

Early Experience with ASDL in lcc, Software—Practice and Experience 29 (5), 417-435, Apr. 1999. PDF (120KB). Talk slides: PDF (71 KB).

A Machine-Independent Debugger—Revisited, Software—Practice and Experience 29 (10), 849-862, Aug. 1999. PDF (125KB). http://code.google.com/p/cdb

Lcc.NET: Targeting the .NET Common Intermediate Language from Standard C,  Software—Practice and Experience 34 (3), 265-286, Mar. 2004. PDF (185KB).

A Research C# Compiler, Software—Practice and Experience 34 (13), 1211-1224, Nov. 2004 (with T. A. Proebsting). PDF (135KB).


Procedure Referencing Environments in SL5, Conference Record of the Third ACM Symposium of Principles of Programming Languages, 185-191, Atlanta, Jan. 1976 (with D. E. Britton, F. C. Druseikis, R. E. Griswold and R. A. Holmes). PDF (620KB).

A Procedure Mechanism for Backtrack Programming, Proceedings of the ACM Annual Conference, 401-405, Houston, Oct. 1976. PDF (461KB).

Language Facilities for Programmable Backtracking, Proceedings of the SIGART-SIGPLAN Symposium on Artificial Intelligence and Programming Languages, 94-99, Rochester, Aug. 1977 (with R. E. Griswold). PDF (446KB).

A Portable File System, Proceedings of the JPL-SIGNUM Conference on the Computing Environment for Mathematical Software, 17-18, Pasadena, July 1981. PDF (368KB).

A High-Level Programming and Command Language, Proceedings of the SIGPLAN'83 Symposium on Programming Language Issues in Software Systems, 212-219, San Francisco, June 1983 (with C. W. Fraser). PDF (659KB).

High-Level Language Facilities for Low-Level Services, Conference Record of the Twelfth ACM Symposium on Principles of Programming Languages, 217-224, New Orleans, Jan. 1985 (with C. W. Fraser). PDF (801KB).

EZ Processes, Proceedings of the 1990 International Conference on Computer Languages, 90-97, New Orleans, Mar. 1990 (with M. Kobayashi). PDF (95KB).

A Retargetable Debugger, Proceedings of the SIGPLAN'92 Conference on Programming Language Design and Implementation, 22-31, San Francisco, June 1992 (with N. Ramsey). PDF (112KB). http://www.cs.tufts.edu/~nr/ldb/

Distributed EZ, Proceedings of the 16th Annual International Computer Software and Applications Conference, 136-142, Chicago, Sep. 1992 (with A. E. Campos). PDF (96KB).

DUEL—A Very High-Level Debugging Language, Proceedings of the Winter USENIX Technical Conference, 107-117, San Diego, Jan. 1993 (with M. Golan). PDF (164KB).

Garbage Collection in Distributed EZ, Proceedings of the XIII International Conference of the Chilean Computer Science Society, 251-259, La Serena, Chile, Oct. 1993 (with A. E. Campos). PDF (62KB).

A Simple and Extensible Graphical Debugger, Proceedings of the Winter USENIX Technical Conference, 173-184, Anaheim, CA, Jan. 1997 (with J. L. Korn). PDF (137KB), Talk slides: PDF (67KB).

Dynamic Variables, Proceedings of the SIGPLAN'01 Conference on Programming Language Design and Implementation, 264-273, Snowbird, UT, June 2001 (with T. A. Proebsting). PDF (91 KB). Talkslides: PDF (75 KB).


Theory of a Zeeman Ring Laser, MS Thesis, University of Arizona, Tucson, 1972.

Theory of a Zeeman Ring Laser: General Formalism, Physical Review A 9 (1), 466-480, Jan. 1974 (with M. Sargent III). PDF (2157KB).

Procedure-Based Linguistic Mechanisms in Programming Languages, PhD Dissertation, University of Arizona, Tucson, Sep. 1976. PDF (493KB).

An Overview of SL5, SIGPLAN Notices 12 (4), 40-50, Apr. 1977 (with R. E. Griswold). PDF (712KB).

The Icon Programming Language: An Overview, SIGPLAN Notices 14 (4), 18-31, Apr. 1979 (with R. E. Griswold and J. T. Korb). PDF (612KB).

Theory of a Zeeman Ring Laser—Part II: Special Cases, IEEE Journal of Quantum Electronics QE-15 (11), 1301-1309, Nov. 1979 (with W. Chow, J. Hambenne, M. Sargent III and M. O. Scully). PDF (695KB).

The Y Programming Language, SIGPLAN Notices 16 (2), 59-68, Feb. 1981. PDF (789KB).

String Processing Languages, Encyclopedia of Computer Science, 2nd ed., Van Nostrand Reinhold, NY, 1437-1444, 1983; 3rd ed., 1302-1308, 1993, PDF 85KB; 4th ed., Nature Publishing Group, 2000, 1694-1701, PDF 35KB (with R. E. Griswold). An abridged version appears in the Concise Encyclopedia of Computer Science, John Wiley & Sons, 2004, 724-727.

Printing Common Words, Communications of the ACM 30 (7), 594-599, July 1987. PDF (96KB; includes errata). See also http://doi.acm.org/10.1145/28569.315738.

A Retargetable Compiler for ANSI C, SIGPLAN Notices 26 (4), 29-43, Oct. 1991 (with C. W. Fraser). PDF (100KB).

A Brief Introduction to Icon, Preprints of the Second ACM SIGPLAN History of Programming Languages Conference (HOPL-II), SIGPLAN Notices 28 (3), 359-360, Mar. 1993.

Compile C Faster on Linux, Linux Journal (25), 32-33, May 1996 (with C. W. Fraser).

Machine Independent Debugger, US Patent 6795962, Sep. 21, 2004.

Method and Apparatus for Facilitating Execution of Applications Accepting Local Path and URL Specified File Parameters, US Patent 7073165, July 4, 2006.

Method and Apparatus for Providing Dynamically Scoped Variables Within a Statically Scoped Computer Programming Language, US Patent 7096456, Aug. 22, 2006 (with T. A. Proebsting).

Extensible Software Development Services, US Patent 8271964, Sep. 18, 2012 (with B. G. Zorn).

Storing Results Related to Requests for Software Development Services, US Patent 8407206, Mar. 26, 2013 (with T. A. Proebsting and B. G. Zorn).

Accessing Objects in Hosted Storage, US Patent 8886907, Nov. 11, 2014 (with M. F. Schwartz, B. N. Bershad and D. Erb).

Permissions of Objects in Hosted Storage, US Patents 8176283, May 8, 2012; 8375185, Feb. 12, 2013; 8612710, Dec. 17, 2013; 8924674, Dec. 30, 2014 (all with V. Aikas).

Technical Reports

Microsoft Research, Redmond, WA

The lcc 4.x Code-Generation Interface, MSR-TR-2001-64, July 2001 (with C. W. Fraser). PDF (257 KB).

Princeton University, Department of Computer Science, Princeton, NJ

Installing lcc,  Dec. 1994, revised June 1995, Dec. 1995, Oct. 1996, June 1997, Sep. 1998, Sep. 2002 (with C. W. Fraser).

Copying Garbage Collection in the Presence of Ambiguous References, Tech. Rep. CS-TR-162-88, June 1988 (with A. W. Appel). PDF (73 KB).

University of Arizona, Department of Computer Science, Tucson, AZ

Bibliography of Technical Reports, 1978–1985, Tech. Rep. 86-8, Mar. 1986.

Integrating Operating Systems and Languages, Tech. Rep. 84-2, Jan. 1984 (with C. W. Fraser).

The EZ Reference Manual, Tech. Rep. 84-1, Jan. 1984 (with C. W. Fraser).

DECSystem-10 C Programmer's Manual, Tech. Rep. 83-12a, Aug. 1983, revised Jan. 1984.

Transporting Y, Tech. Rep. 83-2, Mar. 1983.

The Y Compiler, Tech. Rep. 83-1, Jan. 1983.

The Machine-Independent Linker link, Tech. Rep. 82-10, Sep. 1982 (with C. W. Fraser).

Installing Version 3 of the Software Tools, Tech. Rep. 81-23, Dec. 1981.

Y Programmer's Manual, Tech. Rep. 81-22, Dec. 1981.

Ratfor Programmer's Manual, Tech. Rep. 81-21, Dec. 1981.

Software Tools User's Manual, Tech. Rep. 81-20, Dec. 1981.

The S Programming Language, Tech. Rep. 81-13, Aug. 1981 (with D. S. Chimenti and C. W. Fraser).

The Y Programming Language, Tech. Rep. 80-7b, Apr. 1980; revised June 1980, Oct. 1981.

The Portable I/O System PIOS, Tech. Rep. 80-6a, Apr. 1980; revised Nov. 1980.

The Portable Directory System PDS, Tech. Rep. 80-4, Mar. 1980.

Software Tools Programmer's Manual, Tech. Rep. 79-15, Aug. 1979.

Icon Implementation Notes, Tech. Rep. 79-12a, July 1979; revised Feb. 1980 (with W. J. Hansen).

Transporting the Icon Programming Language, Tech. Rep. 79-2b, Mar. 1979; revised June 1979, Feb. 1980 (with R. E. Griswold and S. B. Wampler).

Transporting Ratfor, Tech. Rep. 79-4a, Mar. 1979; revised May 1979.

Reference Manual for the Icon Programming Language, Tech. Rep. 79-1a, Jan. 1979; revised Jan. 1980 (with R. E. Griswold).

The Sil/2 Component of SL5, May. 1977; revised June 1977, Aug. 1977, Dec. 1977 (with R. E. Griswold and J. T. Korb).

Yale University, Department of Computer Science, New Haven, CT

Increasing the Confidence in Software using Program Perturbations, Nov. 1976 (with R. J. Lipton and F. G. Sayward). PDF (2152 KB).

University of Arizona, Department of Computer Science, Tucson, AZ

The Syntax and Semantics of SL5, Dec. 1975; revised Aug. 1976.

The PASCAL-10 Runtime System, Dec. 1975 (with D. E. Britton).

Generated Code for PASCAL-10, Dec. 1975 (with D. E. Britton).

A Procedural Approach to the Definition and Realization of Abstract Data Structures, Sep. 1975.

University of Arizona Computer Center, Tucson, AZ

PRECOM, A General-Purpose Preprocessor, June 1975.

SOS, The Son of Stopgap Text Editor, Oct. 1974.

The Manipulation of Varying-Length String Data in Fortran IV, May 1974; revised June 1975.

TEXT, A Program for Formatting Text Files, May 1974; revised May 1975.

Western Electric Engineering Research Center, Princeton, NJ

Spatially-Multiplexed Character Sets and Their Implementation in Fortran IV, Oct. 1973.

The Design of ELFBOL—A Full SNOBOL4 for the PDP-11, Oct. 1973 (with J. F. Gimpel).

Operation of the BELTEL Compiler and Runtime System, Sep. 1973 (with M. K. Podlecki).

The BELTEL Compiler I. General Design and Structure, Sep. 1973 (with D. E. Stockton).

The BELTEL Macro Processor, May 1973.

An Introduction to SCROLL: A Pattern Recording Language and Computer Plotting System, Dec. 1972.

A Computer Plotting System Incorporating the SCROLL Language, Oct. 1972.