Mu for systems programming


As a thin layer over the OS, the Mu micro VM is a small language runtime, lying at a similar level as LibC, ld (or dyld, the dynamic loader), the lower part of the JVM, POSIX, and so on. So far, our primary concern has been supporting the higher-level languages, but the interaction between Mu and the lower level, such as the native libraries, has just become part of the design. This topic will further expore the interaction with the native libraries, the OS, and the hardware. One goal is to extend Mu so that some Mu IR programs can be written to take over some responsibilities of LibC and ld. A more ambitious goal is to run Mu on a very thin OS kernel, such as the seL4 microkernel. 


The student should assess how low the Mu micro VM can go to interact directly with the system, and where Mu should be augmented by native programs (in assembly or, less preferrably, in C). The student should have his or her own  pinion about the design of native interface,
or an even lower-level interface (such as inline assembly).


The student should have experience in system programming in C. Experience with assembly is preferred. (Work experience in an underground sewer is a significant advantage :D) 

Background Literature


The student will gain familiarity with common ISAs (such as x64, ARM, ...) and their user-visible hardware-specific features (including those not commonly exposed by programming languages, such as special instructions and special hardware counters). The student will also  get fimilar with the OS interfaces (including those below the wrapped functions provided by libc) and existing system interfaces (such as libc, loader, POSIX implementations).




micro virtual machine
programming language

Updated:  1 June 2019/Responsible Officer:  Dean, CECS/Page Contact:  CECS Marketing