An incubator/sandbox for learning compilers, interpreters, code generation, virtual machines, assemblers, JITs, etc.
Hacks that have grown into separate projects:
- x86/hasm: a simple x86 assembler written in Haskell, for now it's opcode set is very limited;
- fp/secd: implementation of SECD virtual machine in C with a Scheme-to-SECD compiler;
Some protoprojects that may be interesting:
- js/slothjs: an effort at a naïve, primitive, savage Javascript interpreter (with parsing offloaded to Esprima);
- bf/bfjc: a primitive but fully functional x86_64 JIT compiler for BrainFuck, inspired by Adventures in JIT compilation by eliben ;
- fp/tapl: reimplementation of some typecheckers from TAPL (in Haskell/Prolog), e.g. fullsimple.
- llvm/kldscp: LLVM tutorial, JIT compiler of a toy language Kaleidoscope;
- forth/mips/mforth.S: rewrite of the awesome jonesforth from x86/Linux to MIPS/Linux (tested on CI20);
- c/longjmp/x86: a hackish reimplementation of
setjmp
/longjmp
compliant to GCC x86 ABI; - zoo/{calc, miniml, minihs, miniprolog, boa}: a mirror of the awesome PLZoo ;
- rel/chr: small Constraint Handling Rules examples;