>>1
1. reuse GCC codegenerator
2. write your own DSL
3. movitz
basically, to do Lisp OS you have to bootstrap runtime, which carries garbage collector and compiler. Then you just run it in unprotected mode, because compiler requires ROOT password for driver code requiring direct-memory access.
for micro-controller you just write everything in C/C++ like DSL.