{"repo":"cksystemsteaching/selfie","free":true,"listed":false,"github":"https://github.com/cksystemsteaching/selfie","clone":"git clone https://github.com/cksystemsteaching/selfie.git","description":"An educational software system of a tiny self-compiling C compiler, a tiny self-executing RISC-V emulator, and a tiny self-hosting RISC-V hypervisor.","language":"Jupyter Notebook","stars":2519,"topics":["teaching","computer-science","compiler","emulator","virtual-machine","symbolic-execution-engine"],"license":"BSD-2-Clause","category":"self-hosted-apps","readme_excerpt":"Selfie Selfie is a project of the Computational Systems Group at the Department of Computer Sciences of the University of Salzburg in Austria. The Selfie Project provides an educational platform for teaching undergraduate and graduate students the design and implementation of programming languages and runtime systems. The focus is on the construction of compilers, libraries, operating systems, and virtual machine monitors. The common theme is to identify and resolve self-reference in systems code which is seen as the key challenge when teaching systems engineering, hence the name. Selfie is a self-contained 64-bit, 12KLOC C implementation of: 1. a self-compiling compiler called starc that compiles a tiny but still fast subset of C called C Star (C\\ ) to a tiny and easy-to-teach subset of RISC-V called RISC-U, 2. a self-executing emulator called mipster that executes RISC-U code including itself when compiled with starc, 3. a self-hosting hypervisor called hypster that provides RISC-U virtual machines that can host all of selfie, that is, starc, mipster, and hypster itself, and 4. a tiny C\\ library called libcstar utilized by selfie. Selfie is implemented in a single (!) file and kept minimal for simplicity. There is also a simple in-memory linker, a RISC-U disassembler, a garbage collector, L1 instruction and data caches, a profiler, and a debugger with replay as well as minimal operating system support in the form of RISC-V system calls built into the emulator and hypervisor","default_branch":null,"files":null,"tree":[],"storefront":"/r/cksystemsteaching","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/cksystemsteaching/selfie/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}