Selfie: An Unified Educational Platform for Understanding and Studying Modern Computer Systems

Selfie is a unique project nestled in the vastness of GitHub, aiming to create a coherent platform for learning about the intricacies of modern computer systems. Brimming with educational potential and practical usefulness, the Selfie project paves pathways for computer science enthusiasts and scholars to grasp core concepts of how modern computing machinery works.

Project Overview:


This ambitious project comprises a tiny self-compiling C compiler, a tiny self-interpreting MIPS emulator, and a tiny self-hosting MIPS hypervisor. Its primary goal is to deploy minimalistic means to delve into and educate about various pivotal facets of computer systems. By offering an intimately interlinked, grounded understanding of computing hardware and software aspects, Selfie caters to computer science students, researchers, and enthusiasts alike.

Project Features:


Selfie stands out with its unique approach to unify the compiler, the emulator, and the hypervisor under a single codebase spanning approximately 15k lines of code. Each component is meticulously designed to serve dual purposes of practical functionality and intellectual elucidation. The self-compiling C compiler illuminates how high-level programming languages translate into machine-readable code. The self-interpreting MIPS emulator facilitates understanding of how machines execute programmed instructions, while the self-hosting MIPS hypervisor provides insights into machine virtualization. The project adeptly demonstrates these facets through the MIPS (Microprocessor without Interlocked Pipelined Stages) 64-bit architecture.

Technology Stack:


Written purely in C and minimal MIPS assembly, the Selfie project leverages these base-level languages to stay true to its mission of understanding computers from the ground up. The choice of C reaffirms a down-to-the-bare-bones learning approach and reinforces the project's commitment to educational transparency.

Project Structure and Architecture:


Selfie features a lean yet profound architecture. At its core, it connects the C language and MIPS instructions in a cycle of self-reference through which the compiler and the emulator emerge. This cyclical duality is extended to the hypervisor that spans both the compiler-emulator and the real machine emulating the emulator, forming a “triangle of self-reference” at a higher system level.


Subscribe to Project Scouts

Don’t miss out on the latest projects. Subscribe now to gain access to email notifications.
tim@projectscouts.com
Subscribe