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

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

 

 
  1. int ip = 0;  int sp = -1; 
  2. int stack[256]; // 用数组或适合此处的其它结构   
  3. // 其它C代码 

现在如果我们想入栈一个值,我们先增加栈顶指针,接着设置当前sp处的值(我们刚刚增加的)。注意:这两步的顺序很重要!

 

 
  1. // 压栈5   
  2. // sp = -1  sp++; // sp = 0 
  3. stack[sp] = 5; // 栈顶现在变为5 

所以,在我们的执行函数eval()里,可以像这样实现push出栈指令:

 

 
  1. void eval(int instr) {  switch (instr) { 
  2. case HLT: {  running = false; 
  3. break;  } 
  4. case PSH: {  sp++;