TAL(ID:3708/tal002)
Assembly language for TALC
for Typed Assembly Language
Stack-Based Typed Assembly Language
TALC project at Cornell, Greg Morrisett et al, 1997
Structures:
Related languages
TIL |
=> |
TAL | |
Influence |
TAL |
=> |
Popcorn | |
Compiled to |
TAL |
=> |
TAL/T | |
Derivation of |
References:
Frederick Smith and Greg Morrisett. Mostly-Copying Collection: A Viable Alternative to Conversative Mark-Sweep. Technical Report TR97-1644, Cornell University, August 1997. view details
Abstract: Many high-level language compilers generate C code and then invoke a C compiler to do code generation, register allocation, stack management, and low-level optimization. To date, most of these compilers link the resulting code against a conservative mark-sweep garbage collector in order to reclaim unused memory. We introduce a new collector, MCC, based on mostly-copying collection, and characterize the conditions that favor such a collector over a mark-sweep collector. In particular we demonstrate that mostly-copying collection outperforms conservative mark-sweep under the same conditions that accurate copying collection outperforms accurate mark-sweep: Specifically, MCC meets or exceeds the performance of a mature mark-sweep collector when allocation rates are high, and physical memory is large relative to the live data.
pdf
Morrisett, Greg; David Walker, Karl Crary, and Neal Glew. From System F to Typed Assembly Language (Extended version). Technical Report TR97-1651, Cornell University, November 1997. view details
Abstract: We motivate the design of a statically typed assembly language (TAL) and present a type-preserving translation from System F to TAL. The TAL 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 objects, as well as user-defined abstract data types. The type system ensures that well-typed programs cannot violate these abstractions. In addition, the typing constructs place almost no restrictions on low-level optimizations such as register allocation, instruction selection, or instruction scheduling.
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 proof carrying code, suitable for use in systems where untrusted and potentially malicious code must be checked for safety before execution.
pdf
Crary, Karl ; Stephanie Weirich, and Greg Morrisett. Intensional Polymorphism in Type-Erasure Semantics (Extended version). Technical Report TR98-1721, Cornell University, November 1998. view details
Crary, Karl ; Stephanie Weirich, and Greg Morrisett. Intensional Polymorphism in Type-Erasure Semantics. 1998 International Conference on Functional Programming, pages 301-312, Baltimore, September 1998. view details
Morrisett, Greg; David Walker, Karl Crary, and Neal Glew. From System F to Typed Assembly Language. view details
in The Twenty-Fifth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, CA, USA, January 1998 view details
Morrisett, Greg; Karl Crary, Neal Glew, and David Walker. Stack-Based Typed Assembly Language (Extended version). Technical Report CMU-CS-98-178, Carnegie Mellon University, December 1998. view details
in The Twenty-Fifth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, CA, USA, January 1998 view details
Morrisett, Greg; Karl Crary, Neal Glew, and David Walker. Stack-Based Typed Assembly Language. In the 1998 Workshop on Types in Compilation, Kyoto, Japan, March 1998. Published in Xavier Leroy and Atsushi Ohori, editors, Lecture Notes in Computer Science, volume 1473, pages 28-52. Springer-Verlag, 1998. view details
in The Twenty-Fifth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, CA, USA, January 1998 view details
Smith, Frederick and Greg Morrisett "Comparing Mostly-Copying and Mark-Sweep Conversative Collection" pp68-78 view details
Abstract: Many high-level language compilers generate C code and then invoke a C compiler for code generation, register allocation, stack management, and low-level optimization. To date, most of these compilers link the resulting code against a conservative mark-sweep garbage collector in order to reclaim unused memory. We introduce a new collector, MCC, based on an extension of mostly-copying collection.
We analyze the various design decisions made in MCC and provide a performance comparison to the most widely used conservative mark-sweep collector (the Boehm-Demers-Weiser collector). Our results show that a good mostly-copying collector can outperform a mature highly-optimized mark-sweep collector when physical memory is large relative to the live data. A surprising result of our analysis is that cache behavior has a greater impact on overall performance than either collector time, or allocation code.
pdf
in 1998 International Symposium on Memory Management, Vancouver, Canada, October 1998 view details
Crary, Karl "A Simple Proof Technique for Certain Parametricity Results" view details
in In the 1999 ACM SIGPLAN International Conference on Functional Programming, Paris, France, September 1999. view details
Crary, Karl ; David Walker, and Greg Morrisett. Typed Memory Management in a Calculus of Capabilities view details
Abstract: An increasing number of systems rely on programming language technology to ensure safety and security of low-level code. Unfortunately, these systems typically rely on a complex, trusted garbage collector. Region-based type systems provide an alternative to garbage collection by making memory management explicit but verifiably safe. However, it has not been clear how to use regions in low-level, type-safe code.
We present a compiler intermediate language, called the Capability Calculus, that supports region-based memory management, enjoys a provably safe type system, and is straightforward to compile to a typed assembly language. Source languages may be compiled to our language using known region inference algorithms. Furthermore, region lifetimes need not be lexically scoped in our language, yet the language may be checked for safety without complex analyses. Finally, our soundness proof is relatively simple, employing only standard techniques.
The central novelty is the use of static capabilities to specify the permissibility of various operations, such as memory access and deallocation. In order to ensure capabilities are relinquished properly, the type system tracks aliasing information using a form of bounded quantification.
pdf
in [ACM SIGACT-SIGPLAN] The Twenty-Sixth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Antonio, TX, USA, January 1999. view details
Crary, Karl and Weirich, Stephanie "Flexible Type Analysis" view details
in In the 1999 ACM SIGPLAN International Conference on Functional Programming, Paris, France, September 1999. view details
Frederick Smith, David Walker and Greg Morrisett. Alias Types. Technical Report TR99-1773, Cornell University, October 1999. view details
in In the 1999 ACM SIGPLAN International Conference on Functional Programming, Paris, France, September 1999. view details
Glew, Neal "Type Dispatch for Named Hierarchical Types" view details
in In the 1999 ACM SIGPLAN International Conference on Functional Programming, Paris, France, September 1999. view details
Glew, Neal and Greg Morrisett. Type-Safe Linking and Modular Assembly Language. view details
in [ACM SIGACT-SIGPLAN] The Twenty-Sixth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Antonio, TX, USA, January 1999. view details
Glew, Neal Object Closure Conversion. In the 3rd International Workshop on Higher Order Operational Techniques in Semantics, Paris, France, September 1999. view details
in [ACM SIGACT-SIGPLAN] The Twenty-Sixth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Antonio, TX, USA, January 1999. view details
Glew, Neal Object Closure Conversion. Technical Report TR99-1763, Cornell University, August 1999. view details
in [ACM SIGACT-SIGPLAN] The Twenty-Sixth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Antonio, TX, USA, January 1999. view details
Glew, Neal Type Dispatch for Named Hierarchical Types. Technical Report TR99-1738, Cornell University, April 1999. view details
in [ACM SIGACT-SIGPLAN] The Twenty-Sixth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Antonio, TX, USA, January 1999. view details
Greg Morrisett, Karl Crary, Neal Glew, Dan Grossman, Richard Samuels, Frederick Smith, David Walker, Stephanie Weirich, and Steve Zdancewic. "TALx86: A Realistic Typed Assembly Language" view details
in Proceedings of the 1999 ACM SIGPLAN Workshop on Compiler Support for System Software, Atlanta, GA, USA, May 1999. view details
Hornof, Luke and Trevor Jim. Certifying Compilation and Run-time Code Generation view details
Abstract: A certifying compiler takes a source language program and produces object code, as well as a "certificate'' that can be used to verify that the object code satisfies desirable properties, such as type safety and memory safety. Certifying compilation helps to increase both compiler robustness and program safety. Compiler robustness is improved since some compiler errors can be caught by checking the object code against the certificate immediately after compilation. Program safety is improved because the object code and certificate alone are sufficient to establish safety: even if the object code and certificate are produced on an unknown machine by an unknown compiler and sent over an untrusted network, safe execution is guaranteed as long as the code and certificate pass the verifier.
Existing work in certifying compilation has addressed statically generated code. In this paper, we extend this to code generated at run time. Our goal is to combine certifying compilation with run-time code generation to produce programs that are both verifiably safe and extremely fast. To achieve this goal, we present two new languages with explicit run-time code generation constructs: Cyclone, a type safe dialect of C, and TAL/T, a type safe assembly language. We have designed and implemented a system that translates a safe C program into Cyclone, which is then compiled to TAL/T, and finally assembled into executable object code. This paper focuses on our overall approach and the front end of our system; details about TAL/T will appear in a subsequent paper.
pdf
in the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, San Antonio, TX, USA, January 1999. view details
Morrisett, Greg; David Walker, Karl Crary, and Neal Glew. From System F to Typed Assembly Language. In ACM Transactions on Programming Languages and Systems, 21(3):528-569, May 1999. view details
in the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, San Antonio, TX, USA, January 1999. view details
Smith, Frederick; Walker, David and Greg Morrisett. "Alias Types" view details
in European Symposium On Programming (ESOP'99), Lecture Notes in Computer Science view details
Walker. David A Type System for Expressive Security Policies. Technical Report TR99-1740, Cornell University, April 1999 view details
in European Symposium On Programming (ESOP'99), Lecture Notes in Computer Science view details
Zdancewic, Steve and Dan Grossman. Principals in Programming Languages: Technical Results. Technical Report TR99-1752, Cornell University, June 1999. view details
in European Symposium On Programming (ESOP'99), Lecture Notes in Computer Science view details
Zdancewic, Steve; Grossman, Dan and Greg Morrisett. "Principals in Programming Languages: A Syntactic Proof Technique" view details
in In the 1999 ACM SIGPLAN International Conference on Functional Programming, Paris, France, September 1999. view details
Crary Karl and Stephanie Weirich. Resource Bound Certification view details
in [ACM SIGACT-SIGPLAN] 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'00), Boston, Massachusetts, January 19-21, 2000 view details
Crary, Karl ; Michael Hicks and Stephanie Weirich. Safe and Flexible Dynamic Linking of Native Code view details
in The 2000 ACM SIGPLAN Workshop on Types in Compilation, Montreal, Canada, September 2000. view details
Frederick Smith, Dan Grossman, Greg Morrisett, Luke Hornof, Trevor Jim. Compiling for Runtime Code Generation (Extended Version). Technical Report TR2000-1824, Cornell University, October 2000. view details
in The 2000 ACM SIGPLAN Workshop on Types in Compilation, Montreal, Canada, September 2000. view details
Grossman, Dan and Greg Morrisett. Scalable Certification for Typed Assembly Language. view details
in The 2000 ACM SIGPLAN Workshop on Types in Compilation, Montreal, Canada, September 2000. view details
Grossman, Dan and Greg Morrisett. Scalable Certification of Native Code: Experience from Compiling to TALx86. Technical Report TR2000-1783, Cornell University, February 2000. view details
in The 2000 ACM SIGPLAN Workshop on Types in Compilation, Montreal, Canada, September 2000. view details
Walker, David A "Type System for Expressive Security Properties" view details
in [ACM SIGACT-SIGPLAN] 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'00), Boston, Massachusetts, January 19-21, 2000 view details
Walker, David and Greg Morrisett. Alias Types for Recursive Data Structures. Technical Report TR2000-1787, Cornell University, March 2000. view details
in [ACM SIGACT-SIGPLAN] 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'00), Boston, Massachusetts, January 19-21, 2000 view details
Walker, David Karl Crary and Greg Morrisett. Typed Memory Management in a Calculus of Capabilities. Technical Report TR2000-1780, Cornell University, February 2000. view details
in [ACM SIGACT-SIGPLAN] 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'00), Boston, Massachusetts, January 19-21, 2000 view details
|