Question

I am a beginner (a little more than that) programmer of C. I am really interested in the field of virtual machines -- JVM, Google V8, Erlang VM, PyPy etc.

My question is:

  • What are the things (language, concepts, algorithms, math, etc.) I need to know/learn to be able to build a virtual machine?
  • Any books or other resources that will be helpful
Was it helpful?

Solution

This topic it self is not easy.

First of all you will need to learn a bit about parsing. Because you will have to learn how to parse and run language. In most cases it will be something simple like MIL for C#.

First thing to read is SCIP "Structure and Interpretation of Computer Programs, Second Edition" This book provides knowledge about topics that you need while building language interpreter. This is bare basic you have to have to start.

Next are hardcores:

1) Dragon Book: "Compilers: Principles, Techniques, and Tools (2nd Edition)" Aho, Seti, Ullman

2) "Compiler Design: Virtual Machines" Reinhard Wilhelm, Helmut Seidl

3) "Decompiling Java" Godfrey Nolan

Personally i never had time to read the 3rd one. And from my own experience i know you have to sacrifice a lot of your time to be able to produce something even semi decent.

Good Luck

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top