Abstract
There is a growing need to provide low-overhead software-based protection mechanisms to protect against malicious or untrusted code. Type-based approaches such as proof-carrying code and typed assembly language provide this protection by relying on untrusted compilers to certify the safety properties of machine language programs. Typed Module Assembly Language (TMAL) is an extension of typed assembly language with support for the type-safe manipulation of dynamically linked libraries. A particularly important aspect of TMAL is its support for shared libraries.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Martin Abadi, Luca Cardeli, Benjamin Pierce, and Didier Remy. Dynamic typing in polymorphic languages. In Peter Lee, editor, Proceedings of the ACM SIG-PLAN Workshop on ML and its Applications, San Francisco, California, June 1992. Carnegie-Mellon University Technical Report CMU-CS-93-105.
Martin Abadi, Luca Cardelli, Benjamin Pierce, and Gordon Plotkin. Dynamic typing in a statically typed language. ACM Transactions on Programming Languages and Systems, 13(2):237–268, 1991.
David Ancona and Elena Zucca. A theory of mixin modules: Basic and derived operators. Mathematical Structures in Computer Science, 8(4):401–446, 1998.
David Ancona and Elena Zucca. A primitive calculus for module systems. In Proceedings of the International Conference on Principles and Practice of Declarative Programming, Paris, France, September 1999. Springer-Verlag.
B. N. Bershad, S. Savage, P. Pardyak, E. G. Sirer, M. E. Fiuczynski, D. Becker, C. Chambers, and S. Egger. Extensibility, safety and performance in the SPIN operating system. In Symposium on Operating Systems Principles, pages 267–283, Copper Mountain, CO, 1995. ACM Press.
Edoardo Biagioni, Robert Harper, Peter Lee, and Brian G. Milnes. Signatures for a network protocol stack: A systems application of standard ML. In Proceedings of ACM Symposium on Lisp and Functional Programming, pages 55–64, Orlando, Florida, January 1994. ACM Press.
Luca Cardelli. Program fragments, linking and modularization. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 266–277. ACM Press, January 1997.
Karl Crary, Robert Harper, and S. Puri. What is a recursive module? In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, Atlanta, GA, 1999. ACM Press.
Karl Crary, Michael Hicks, and Stephanie Weirich. Safe and flexible dynamic linking of native code. In Workshop on Types in Compilation, Lecture Notes in Computer Science, Montreal, Quebec, Canada, September 2000. Springer-Verlag. 108 D. Duggan
Karl Crary and Greg Morrisett. Type structure for low-level programming languages. In Proceedings of the International Conference on Automata, Languages and Programming, Lecture Notes in Computer Science. Springer-Verlag, 1999.
Dominic Duggan. Dynamic typing for distributed programming in polymorphic languages. ACM Transactions on Programming Languages and Systems, 21(1):11–45, January 1999.
Dominic Duggan. Type-safe dynamic linking with recursive DLLs and shared libraries. Technical report, Stevens Institute of Technology, 2000.
M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, 1998.
Neal Glew and Greg Morrisett. Type-safe linking and modular assembly languages. In Proceedings of ACM Symposium on Principles of Programming Languages, San Antonio, Texas, January 1999. ACM Press.
Robert Harper and Mark Lillibridge. A type-theoretic approach to higher-order modules with sharing. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 123–137, Portland, Oregon, January 1994. ACM Press.
Robert Harper, John Mitchell, and Eugenio Moggi. Higher-order modules and the phase distinction. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 341–354. Association for Computing Machinery, 1990.
Michael Hicks and Stephanie Weirich. A calculus for dynamic loading. Technical Report MS-CIS-00-07, University of Pennsylvania, 2000.
Xavier Leroy. Manifest types, modules, and separate compilation. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 109–122, Portland, Oregon, January 1994. acmp.
Xavier Leroy. Applicative functors and fully transparent higher-order modules. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 154–163, San Francisco, California, January 1995. ACM Press.
Xavier Leroy and Michel Mauny. Dynamics in ML. Journal of Functional Programming, 3(4):431–463, 1993.
Sheng Liang and Gilad Bracha. Dynamic class loading in the Java virtual machine. In Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications. ACM Press, October 1998.
Mark Lillibridge. Translucent Sums: A Foundation for Higher-Order Module Systems. PhD thesis, Carnegie-Mellon University, Pittsburgh, PA, May 1997. Technical Report CMU-CS-97-122.
David MacQueen. Using dependent types to express modular structure. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 277–286. ACM Press, 1986.
David MacQueen and Mads Tofte. A semantics for higher-order functors. In European Symposium on Programming, volume 788 of Lecture Notes in Computer Science, pages 409–423. Springer-Verlag, 1994.
Robin Milner. Communication and Concurrency. Prentice-Hall, 1989.
Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Revised De nition of Standard ML. The MIT Press, 1997.
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. In Workshop on Compiler Support for Software Systems (WCSSS), Atlanta, GA, May 1999. Sharing in Typed Module Assembly Language 109
Greg Morrisett, David Walker, Karl Crary, and Neal Glew. From System F to typed assembly language. In Proceedings of ACM Symposium on Principles of Programming Languages, 1998.
George Necula. Proof-carrying code. In Proceedings of ACM Symposium on Principles of Programming Languages, 1997.
George Necula and Peter Lee. Safe kernel extensions without run-time checking. In Operating Systems Design and Implementation, 1996.
Didier Réemy and Jéerôme Vouillon. Objective ML: An effective object-oriented extension to ml. Theory and Practice of Object Systems, 4(1):27–50, 1998.
Claudio Russo. Adding first-class modules to Standard ML. In European Symposium on Programming, Berlin, Germany, April 2000. Springer-Verlag.
Zhong Shao. Transparent modules with fully syntactic signatures. In Proceedings of ACM International Conference on Functional Programming, Paris, France, September 1999.
Mark Shields, Tim Sheard, and Simon Peyton-Jones. Dynamic typing as staged type inference. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 289–302, San Diego, California, January 1998. ACM Press.
Robert Wahbe, Steven Lucco, Thomas E. Anderson, and Susan L. Graham. Efficient software-based fault isolation. In Symposium on Operating Systems Principles, pages 203–216. ACM Press, 1993.
Dan S. Wallach, Dirk Balfanz, Drew Dean, and Edward W. Felten. Extensible security architectures for Java. In Symposium on Operating Systems Principles. ACM Press, 1997.
Stephanie Weirich. Type-safe cast (functional pearl). In Proceedings of ACM International Conference on Functional Programming, Montreal, Canada, September 2000. ACM Press.
Joseph B. Wells and Renée Vestergaard. Equational reasoning for linking with first-class primitive modules. In European Symposium on Programming, Berlin, Germany, April 2000. Springer-Verlag.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Duggan, D. (2001). Sharing in Typed Module Assembly Language. In: Harper, R. (eds) Types in Compilation. TIC 2000. Lecture Notes in Computer Science, vol 2071. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45332-6_4
Download citation
DOI: https://doi.org/10.1007/3-540-45332-6_4
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42196-2
Online ISBN: 978-3-540-45332-1
eBook Packages: Springer Book Archive