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

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

如果我们打印变量 instr,本来应是 PSH 的它将显示为0,因为在他是我们枚举里的第一个值。我们也可以写一个取回函数像这样:

 

 
  1. int fetch() {  return program[ip]; 

这个函数将会返回当前被调用指令。太棒了,那么如果我们想要下一条指令呢?很容易,我们只要增加指令指针就好了:

 

 
  1. int main() {  int x = fetch(); // PSH 
  2. ip++; // increment instruction pointer  int y = fetch(); // 5 

那么怎样让它自己动起来呢?我们知道一个程序直到它执行 HLT 指令才会停止。因此我们使用一个无限的循环持续直到当前指令为HLT。

 

 
  1. // INCLUDE <stdbool.h>!  bool running = true;