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.
- 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 Scholar
- 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 ScholarDigital Library
- J. Liedtke. 1996. Toward Real Microkernels. Commun. ACM 39, 9 (Sept. 1996), 70-77. Google ScholarDigital Library
- Niklaus Wirth. 1996. Compiler Construction. Addison Wesley. Google ScholarDigital Library
Index Terms
- On the self in selfie (invited talk)
Recommendations
Perceptions of selfie takers versus selfie stick users
This study examined the perceptions of others taking selfies in public, comparing those using selfie sticks with those taking selfies the traditional way, with their arms extended. Perceived narcissism, considerateness, and social attractiveness were ...
MOSE: Live Migration Based On-the-Fly Software Emulation
ACSAC '15: Proceedings of the 31st Annual Computer Security Applications ConferenceSoftware emulation has been proven useful in many scenarios, such as software testing, malware analysis, and intrusion response. However, fine-grained software emulation (e.g., at the instruction level) incurs considerable execution overhead (about 8x ...
Selfie: co-locating metadata and data to enable fast virtual block devices
SYSTOR '15: Proceedings of the 8th ACM International Systems and Storage ConferenceVirtual block devices are widely used to provide block interface to virtual machines (VMs). A virtual block device manages an indirection mapping from the virtual address space presented to a VM, to a storage image hosted on file system or storage ...
Comments