MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  From system F to typed assembly language (1999) [483 citations — 64 self]

Download:
Download as a PDF | Download as a PS
by Greg Morrisett, David Walker, Karl Crary, Neal Glew
ACM Transactions on Programming Languages and Systems
http://www.cs.cornell.edu/talc/papers/tal-toplas.ps.gz
Add To MetaCart

Abstract:

We motivate the design of a typed assembly language (TAL) and present a type-preserving translation from System F to TAL. The typed assembly language we present is based on a conventional RISC assembly language, but its static type system provides support for enforcing high-level language abstractions, such as closures, tuples, and user-defined abstract data types. The type system ensures that well-typed programs cannot violate these abstractions. In addition, the typing constructs admit many low-level compiler optimizations. Our translation to TAL is specified as a sequence of type-preserving transformations, including CPS and closure conversion phases; type-correct source programs are mapped to type-correct assembly language. A key contribution is an approach to polymorphic closure conversion that is considerably simpler than previous work. The compiler and typed assembly language provide a fully automatic way to produce certified code, suitable for use in systems where untrusted and potentially malicious code must be checked for safety before execution.

Citations

1463 A Proposal for Standard ML – Milner - 1984
890 The Java virtual machine specification – Lindholm, Yellin - 1999
811 Proof-Carrying Code – Necula - 1997
588 Compiling with Continuations – Appel - 1992
500 A semantics of multiple inheritance – Cardelli - 1984
491 The Definition of Standard ML (Revised – Milner, Tofte, et al. - 1997
479 On the unity of logic – Girard - 1993
393 Comprehending monads – Wadler - 1992
390 Extensibility, safety and performance in the SPIN operating system – Bershad, Savage, et al. - 1995
361 Safe kernel extensions without run-time checking – Necula, Lee - 1996
317 Towards a theory of type structure – Reynolds - 1974
277 Abstract types have existential type – Mitchell, Plotkin - 1988
257 The mechanical evaluation of expressions – Landin - 1964
238 Garbage collection in an uncooperative environment – Boehm, Weiser - 1988
227 Interpr'etation Fonctionelle et ' Elimination des Coupures dans l'Arithm'etique d'ordre Sup'erieure – Girard - 1972
218 TIL: A type-directed optimizing compiler for ML – Tarditi, Morrisett, et al. - 1996
205 Orbit: An optimizing compiler for Scheme – Kranz, Kelsey, et al. - 1986
195 Standard ML of New Jersey – Appel, MacQueen - 1991
183 Une extension de l'interpretation de Godel a l'analyse, et son application a l'elimination des coupures dans l'analyse et la theorie des types – Girard - 1971
182 Simple type-theoretic foundations for object-oriented programming – Pierce, Turner - 1994
169 Unboxed objects and polymorphic typing – Leroy - 1992
138 Typed closure conversion – Minimide, Morrisett, et al. - 1996
136 A paradigmatic object-oriented programming language: Design, static typing and semantics – Bruce - 1992
131 Call-by-name, call-by-value, and the lambda calculus – Plotkin - 1975
123 Stack-based typed assembly language – Morrisett, Crary, et al. - 2000
118 TALx86: A realistic typed assembly language – Morrisett, Crary, et al. - 1999
116 The Glasgow Haskell Compiler: A Technical Overview – Jones, Hall, et al. - 1993
114 Intensional polymorphism in type-erasure semantics – Crary, Weirich, et al. - 1999
112 closure-passing style – Appel, Jim, et al. - 1989
110 Comparing object encodings – Bruce, Cardelli, et al. - 1999
110 Type inference for polymorphic references – Tofte - 1990
107 Inheritance as implicit coercion – Breazu-Tannen, Coquand, et al. - 1991
104 Compiling with Proofs – Necula - 1998
102 Danvy and Andrzej Filinski. Representing control, a study of the CPS transformation – Olivier - 1992
101 Compiling with Types – Morrisett - 1995
100 Linear types can change the world – WADLER - 1990
97 types can change the world – Linear - 1990
96 Lambda calculus schemata – Fischer - 1972
94 Abstract models of memory management – Morrisett, Felleisen, et al. - 1995
91 Rabbit: A compiler for Scheme – Jr - 1978
84 From region inference to von Neumann machines via region representation inference – Birkedal, Tofte, et al. - 1996
83 An overview of the FLINT/ML compiler – Shao - 1997
83 Garbage collection in an uncooperative environment, Software Practice and Experience – Boehm, Weiser - 1988
78 Simple imperative polymorphism – Wright - 1995
70 Flexible type analysis – Crary, Weirich - 1999
68 Tag-free garbage collection using explicit type parameters – Tolmach - 1994
67 Explicit polymorphism and CPS conversion – Harper, Lillibridge - 1993
64 Flexible representation analysis – Shao - 1997
59 Type-safe linking and modular assembly language – Glew, Morrisett - 1999
56 Representing control: A study of the CPS transformation – Danvy, Fillinski - 1992