Demystifying magic: high-level low-level programming

  • Authors:
  • Daniel Frampton;Stephen M. Blackburn;Perry Cheng;Robin J. Garner;David Grove;J. Eliot B. Moss;Sergey I. Salishev

  • Affiliations:
  • Australian National University, Canberra, Australia;Australian National University, Canberra, Australia;IBM Research, Hawthorne, NY, USA;Australian National University, Canberra, Australia;IBM Research, Hawthorne, NY, USA;University of Massachusetts, Amherst, MA, USA;St. Petersburg State University, St. Petersburg, Russian Fed.

  • Venue:
  • Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

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. The time has come for high-level low-level programming to be taken more seriously: 1) more projects now use high-level languages for systems programming, 2) increasing architectural heterogeneity and parallelism heighten the need for abstraction, and 3) a new generation of high-level languages are under development and ripe to be influenced.