用C语言来实现一个简单的虚拟机

2020-01-06 13:14:08丽君

这对目前来说已经足够了,你以后还可以改进它,但是只要它能完成这个工作,我们应该满足了。

指令编程(代码)

现在开始写虚拟机的代码了。第一,我们需要定义程序的指令。为此,我们可以使用一个枚举类型enum,因为我们的指令基本上是从0到X的数字。事实上,可以说你是在组装一个汇编文件,它会使用像 mov 这样的词,然后翻译成声明的指令。

我们可以只写一个指令文件,例如 PSH, 5 是0, 5,但是这样并不易读,所以我们使用枚举器!

 

 
  1. typedef enum {  PSH, 
  2. ADD,  POP, 
  3. SET,  HLT 
  4. } InstructionSet; 

现在我们可以将一个测试程序存储为一个数组。我们写一个简单的程序用于测试:将5和6相加,然后将他们打印出来(用POP指令)。如果你愿意,你可以定义一个指令将栈顶的值打印出来。

指令应该存储成一个数组,我将在文档的顶部定义它;但你或许会将它放在一个头文件中,下面是我们的测试程序:

 

  1. const int program[] = {  PSH, 5, 
  2. PSH, 6,  ADD, 
  3. POP,  HLT 
  4. };