LLVM Compiler tutorial: http://llvm.org/docs/tutorial/index.html