The power of high-level languages lies in their abstraction over hardware and software complexity, leading to greater security, better reliability, and lower development costs. However, opaque abstractions are often show-stoppers for systems programmers, forcing them to either break the abstraction, or more often, simply give up and use a different language. This paper addresses the challenge of opening up a high-level language to allow practical low-level programming without forsaking integrity or performance. The contribution of this paper is three-fold: 1) we draw together common threads in a diverse literature, 2) we identify a framework for extending high-level languages for low-level programming, and 3) we show the power of this approach through concrete case studies. Our framework leverages just three core ideas: extending semantics via intrinsic methods, extending types via unboxing and architectural-width primitives, and controlling semantics via scoped semantic regimes. We develop these ideas through the context of a rich literature and substantial practical experience. We show that they provide the power necessary to implement substantial artifacts such as a high-performance virtual machine, while preserving the software engineering benefits of the host language.
%0 Conference Paper
%1 1508305
%A Frampton, Daniel
%A Blackburn, Stephen M.
%A Cheng, Perry
%A Garner, Robin J.
%A Grove, David
%A Moss, J. Eliot B.
%A Salishev, Sergey I.
%B VEE '09: Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
%C New York, NY, USA
%D 2009
%I ACM
%K Abstraction GC HighLevel LowLevel MMTk Optimization VM
%P 81--90
%R http://doi.acm.org/10.1145/1508293.1508305
%T Demystifying Magic: High-level Low-level Programming
%U http://portal.acm.org/citation.cfm?id=1508305
%X The power of high-level languages lies in their abstraction over hardware and software complexity, leading to greater security, better reliability, and lower development costs. However, opaque abstractions are often show-stoppers for systems programmers, forcing them to either break the abstraction, or more often, simply give up and use a different language. This paper addresses the challenge of opening up a high-level language to allow practical low-level programming without forsaking integrity or performance. The contribution of this paper is three-fold: 1) we draw together common threads in a diverse literature, 2) we identify a framework for extending high-level languages for low-level programming, and 3) we show the power of this approach through concrete case studies. Our framework leverages just three core ideas: extending semantics via intrinsic methods, extending types via unboxing and architectural-width primitives, and controlling semantics via scoped semantic regimes. We develop these ideas through the context of a rich literature and substantial practical experience. We show that they provide the power necessary to implement substantial artifacts such as a high-performance virtual machine, while preserving the software engineering benefits of the host language.
%@ 978-1-60558-375-4
@inproceedings{1508305,
abstract = {The power of high-level languages lies in their abstraction over hardware and software complexity, leading to greater security, better reliability, and lower development costs. However, opaque abstractions are often show-stoppers for systems programmers, forcing them to either break the abstraction, or more often, simply give up and use a different language. This paper addresses the challenge of opening up a high-level language to allow practical low-level programming without forsaking integrity or performance. The contribution of this paper is three-fold: 1) we draw together common threads in a diverse literature, 2) we identify a framework for extending high-level languages for low-level programming, and 3) we show the power of this approach through concrete case studies. Our framework leverages just three core ideas: extending semantics via intrinsic methods, extending types via unboxing and architectural-width primitives, and controlling semantics via scoped semantic regimes. We develop these ideas through the context of a rich literature and substantial practical experience. We show that they provide the power necessary to implement substantial artifacts such as a high-performance virtual machine, while preserving the software engineering benefits of the host language.},
added-at = {2010-01-18T14:37:16.000+0100},
address = {New York, NY, USA},
author = {Frampton, Daniel and Blackburn, Stephen M. and Cheng, Perry and Garner, Robin J. and Grove, David and Moss, J. Eliot B. and Salishev, Sergey I.},
biburl = {https://www.bibsonomy.org/bibtex/280573da6cc700a794fa3cf2b44cd4fe9/gron},
booktitle = {VEE '09: Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments},
doi = {http://doi.acm.org/10.1145/1508293.1508305},
interhash = {8760d6fbdafcb342eab5ef08fa081d35},
intrahash = {80573da6cc700a794fa3cf2b44cd4fe9},
isbn = {978-1-60558-375-4},
keywords = {Abstraction GC HighLevel LowLevel MMTk Optimization VM},
location = {Washington, DC, USA},
pages = {81--90},
publisher = {ACM},
timestamp = {2010-01-18T14:37:16.000+0100},
title = {Demystifying Magic: High-level Low-level Programming},
url = {http://portal.acm.org/citation.cfm?id=1508305},
year = 2009
}