MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Stack-based Typed Assembly Language (1998) [131 citations — 35 self]

Download:
Download as a PDF | Download as a PS
by Greg Morrisett, Karl Crary, David Walker, Neal Glew
Journal of Functional Programming
http://www.cs.cornell.edu/glew/papers/stal-tr.ps.gz
Add To MetaCart

Abstract:

In previous work, we presented Typed Assembly Language (TAL). TAL is su#ciently expressive to serve as a target language for compilers of high-level languages such as ML. That work assumed such a compiler would perform a continuation-passing style transform and eliminate the control stack by heap-allocating activation records. However, most compilers are based on stack allocation. This paper presents STAL, an extension of TAL with stack constructs and stack types to support the stack allocation style. We show that STAL is su#ciently expressive to support languages such as Java, Pascal, and ML; constructs such as exceptions and displays; and optimizations such as tail call elimination and callee-saves registers. This paper also formalizes the typing connection between CPS-based compilation and stack-based compilation and illustrates how STAL can formally model calling conventions by specifying them as formal translations of source function types to STAL types.

Citations

919 The Java Virtual Machine Specification – Lindholm, Yellin - 1996
606 Compiling with Continuations – Appel - 1992
501 From system F to typed assembly language – MORRISETT, WALKER, et al. - 1998
275 Types, abstraction, and parametric polymorphism – Reynolds - 1983
263 The Mechanical Evaluation of Expressions – Landin - 1964
224 Til: A type-directed optimizing compiler for ml – Tarditi, Morrisett, et al. - 1996
208 ORBIT: An optimizing compiler for Scheme – Kranz, Kelsey, et al. - 1986
199 Standard ML of New Jersey – Appel, MacQueen - 1991
185 A type system for Java bytecode subroutines – Abadi, Stata - 1998
174 Unboxed objects and polymorphic typing – Leroy - 1992
141 Typed closure conversion – Minamide, Morrisett, et al. - 1996
117 The Glasgow Haskell compiler: a technical overview – Jones, Hall, et al. - 1993
113 Continuation-passing, closure-passing style – Appel, Jim - 1989
108 Inheritance as implicit coercion – Breazu-Tannen, Coquand, et al. - 1991
103 Compiling with Types – Morrisett - 1995
92 Rabbit: A compiler for Scheme – Jr - 1978
87 From region inference to von Neumann machines via region representation inference – Birkedal, Tofte, et al. - 1990
84 An overview of the FLINT/ML compiler – Shao - 1997
71 Representing control in the presence of first-class continuations – Hieb, Dybvig, et al. - 1990
68 Flexible representation analysis – Shao - 1997
67 Continuation-based multiprocessing – Wand - 1980
61 The Java Virtual Machine Speci cation – Lindholm, Yellin - 1997
59 A simple, comprehensive type system for Java bytecode subroutines – O’Callahan - 1999
58 Implementation of the typed call-by-value -calculus using a stack of regions – Tofte, Talpin - 1994
48 Implementation of the typed call-by-value λ-calculus using a stack of regions – Tofte, Talpin - 1994
41 Memory subsystem performance of programs using copying garbage collection – Diwan, Tarditi, et al. - 1994
40 The TIL/ML compiler: Performance and safety through types – Morrisett, Tarditi, et al. - 1996
38 The ML Kit (version 1 – Birkedal, Rothwell, et al. - 1993
29 An empirical and analytic study of stack vs. heap cost for languages with clsoures – Appel, Shao - 1993
24 Callee-saves registers in continuation-passing style – Appel, Shao - 1992
19 Memory system performance of programs with intensive heap allocation – Diwan, Tarditi, et al. - 1995
14 From system F to typed assembly language (extended version – Morrisett, Walker, et al. - 1997
13 Foundations for the implementation of higher-order subtyping – Crary - 1997
10 Using functor categories to generate intermediate code – Reynolds - 1995
7 A formal model of procedure calling conventions – Bailey, Davidson - 1995
5 Strongly typed flow-directed reprsentation transformations – Dimock, Muller, et al. - 1997
5 Representing control in the presence of rst-class continuations – Hieb, Dybvig, et al. - 1990
3 ORBIT:Anoptimizingcompilerfor Scheme – DavidKranz, Rees, et al. - 1986
2 Intel Architecture Optimization Manual – Corporation - 1997
1 Tofte and Jean-Pierre Talpin. Implementation of the typed call-by-value #- calculus using a stack of regions – Mads - 1994
1 Strongly typed ow-directed reprsentation transformations – Dimock, Muller, et al. - 1997