 <p>A VM is a big task to consider. Have you considered basing your VM on something like <a href="http://llvm.org/" rel="nofollow noreferrer">LLVM</a>? </p> <p>LLVM will provide a good base to start from and there are plenty of <a href="http://llvm.org/ProjectsWithLLVM/" rel="nofollow noreferrer">example projects</a> which you can use for understanding.</p>