Back to Search
Start Over
On the self in selfie (invited talk)
- 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