Bytecode Interpreters
A new programming language may include novel features that are not supported directly by mainstream CPUs. The most practical way to generate code for many programming languages is to generate bytecode for an abstract machine whose instruction set directly supports the language’s intended domain. This is important because it sets your language free from the constraints of what current hardware CPUs know how to do. It also allows the generation of code that is tied more closely to the types of problems that you want to solve. If you create your own bytecode instruction set, you can execute programs by writing a virtual machine that knows how to interpret that instruction set. This chapter covers how to design an instruction set and an interpreter that executes bytecode. Because this chapter is tightly connected to Chapter 13, Generating Bytecode, you may want to read them both before you dive into the code.
This chapter covers the following main topics...