I've written a series of blog posts, in which I write a #bytecode#compiler and a #virtualMachine for arithmetic in #Haskell. We explore the following topics in the series:
Parsing arithmetic expressions to ASTs.
Compiling ASTs to bytecode.
Interpreting ASTs.
Efficiently executing bytecode in a VM.
Disassembling bytecode and decompiling opcodes for debugging and testing.
Unit testing and property-based testing for our compiler and VM.
Benchmarking our code to see how the different passes perform.