report · Digital Access to Scholarship at Harvard (DASH) (Harvard University) · 1998
Stack-Based Typed Assembly Language
Greg Morrisett, Karl Crary, David Walker, Neal Glew
Cited by 37Open access
Abstract
In previous work, we presented a Typed Assembly Language (TAL). TAL is sufficiently expressive to serve as a target language for compilers of high-level languages such as ML. This 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 sufficiently 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.
Cite this paper
Morrisett, G., Crary, K., Walker, D., & Glew, N. (1998). Stack-Based Typed Assembly Language. Digital Access to Scholarship at Harvard (DASH) (Harvard University). https://doi.org/10.21236/ada358572
Morrisett, Greg, et al. “Stack-Based Typed Assembly Language.” Digital Access to Scholarship at Harvard (DASH) (Harvard University), 1998, https://doi.org/10.21236/ada358572.
Morrisett, Greg, Karl Crary, David Walker, and Neal Glew. 1998. “Stack-Based Typed Assembly Language.” Digital Access to Scholarship at Harvard (DASH) (Harvard University). https://doi.org/10.21236/ada358572.
Morrisett, G. et al. (1998) ‘Stack-Based Typed Assembly Language’, Digital Access to Scholarship at Harvard (DASH) (Harvard University). Available at: https://doi.org/10.21236/ada358572.
@article{morrisett1998stack,
title = {{Stack-Based Typed Assembly Language}},
author = {Morrisett, Greg and Crary, Karl and Walker, David and Glew, Neal},
journal = {Digital Access to Scholarship at Harvard (DASH) (Harvard University)},
year = {1998},
doi = {10.21236/ada358572}
}Made from the index record. Check names, capitalisation and page numbers against the paper. Need another style? AI for Research has over 10,000.