skip to main content
10.1145/3281287.3281288acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

On the self in selfie (invited talk)

Published:04 November 2018Publication History

ABSTRACT

Selfie is a self-contained 64-bit, 10-KLOC implementation of (1) a self-compiling compiler written in a tiny subset of C called C* targeting a tiny subset of 64-bit RISC-V called RISC-U, (2) a self-executing RISC-U emulator, (3) a self-hosting hypervisor that virtualizes the emulated RISC-U machine, and (4) a prototypical symbolic execution engine that executes RISC-U symbolically. Selfie can compile, execute, and virtualize itself any number of times in a single invocation of the system given adequate resources. There is also a simple linker, disassembler, debugger, and profiler. C* supports only two data types, <pre>uint64_t</pre> and <pre>uint64_t*</pre>, and RISC-U features just 14 instructions, in particular for unsigned arithmetic only, which significantly simplifies reasoning about correctness. Selfie has originally been developed just for educational purposes but has by now become a research platform as well. We discuss how selfie leverages the synergy of integrating compiler, target machine, and hypervisor in one self-referential package while orthogonalizing bootstrapping, virtual and heap memory management, emulated and virtualized concurrency, and even replay debugging and symbolic execution.

References

  1. A.S. Abyaneh and C.M. Kirsch. 2018. You can program what you want but you cannot compute what you want. In Edward A. Lee Festschrift (LNCS), Vol. 10760. Springer.Google ScholarGoogle Scholar
  2. C.M. Kirsch. 2017. Selfie and the Basics. In Proc. ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!). ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Liedtke. 1996. Toward Real Microkernels. Commun. ACM 39, 9 (Sept. 1996), 70-77. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Niklaus Wirth. 1996. Compiler Construction. Addison Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. On the self in selfie (invited talk)

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            VMIL 2018: Proceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages
            November 2018
            66 pages
            ISBN:9781450360715
            DOI:10.1145/3281287

            Copyright © 2018 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 4 November 2018

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            Overall Acceptance Rate4of4submissions,100%

            Upcoming Conference

          • Article Metrics

            • Downloads (Last 12 months)2
            • Downloads (Last 6 weeks)0

            Other Metrics

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader