Skip to main content

Sharing in Typed Module Assembly Language

  • Conference paper
  • First Online:
Types in Compilation (TIC 2000)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2071))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. 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.

    Article  Google Scholar 

  3. David Ancona and Elena Zucca. A theory of mixin modules: Basic and derived operators. Mathematical Structures in Computer Science, 8(4):401–446, 1998.

    Article  MATH  MathSciNet  Google Scholar 

  4. 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.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. Luca Cardelli. Program fragments, linking and modularization. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 266–277. ACM Press, January 1997.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. 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

    Google Scholar 

  10. 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.

    Google Scholar 

  11. Dominic Duggan. Dynamic typing for distributed programming in polymorphic languages. ACM Transactions on Programming Languages and Systems, 21(1):11–45, January 1999.

    Article  Google Scholar 

  12. Dominic Duggan. Type-safe dynamic linking with recursive DLLs and shared libraries. Technical report, Stevens Institute of Technology, 2000.

    Google Scholar 

  13. M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, 1998.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. Michael Hicks and Stephanie Weirich. A calculus for dynamic loading. Technical Report MS-CIS-00-07, University of Pennsylvania, 2000.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. Xavier Leroy and Michel Mauny. Dynamics in ML. Journal of Functional Programming, 3(4):431–463, 1993.

    Article  Google Scholar 

  21. 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.

    Google Scholar 

  22. 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.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. 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.

    Google Scholar 

  25. Robin Milner. Communication and Concurrency. Prentice-Hall, 1989.

    Google Scholar 

  26. Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Revised De nition of Standard ML. The MIT Press, 1997.

    Google Scholar 

  27. 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

    Google Scholar 

  28. 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.

    Google Scholar 

  29. George Necula. Proof-carrying code. In Proceedings of ACM Symposium on Principles of Programming Languages, 1997.

    Google Scholar 

  30. George Necula and Peter Lee. Safe kernel extensions without run-time checking. In Operating Systems Design and Implementation, 1996.

    Google Scholar 

  31. 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.

    Article  Google Scholar 

  32. Claudio Russo. Adding first-class modules to Standard ML. In European Symposium on Programming, Berlin, Germany, April 2000. Springer-Verlag.

    Google Scholar 

  33. Zhong Shao. Transparent modules with fully syntactic signatures. In Proceedings of ACM International Conference on Functional Programming, Paris, France, September 1999.

    Google Scholar 

  34. 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.

    Google Scholar 

  35. 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.

    Google Scholar 

  36. 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.

    Google Scholar 

  37. Stephanie Weirich. Type-safe cast (functional pearl). In Proceedings of ACM International Conference on Functional Programming, Montreal, Canada, September 2000. ACM Press.

    Google Scholar 

  38. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics