Back to Search Start Over

On the self in selfie (invited talk)

Authors :
Christoph M. Kirsch
Source :
VMIL@SPLASH
Publication Year :
2018
Publisher :
ACM, 2018.

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, uint64_t and uint64_t*, 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.

Details

Database :
OpenAIRE
Journal :
Proceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages
Accession number :
edsair.doi...........acdbde097711a2f5f6a6423f6d03d934
Full Text :
https://doi.org/10.1145/3281287.3281288