Stack-Based Interpreter
interpret(byteCodeT byteCodes[], int argList[], int numArgs) {
...
for (;;) {
switch (byteCodes[pc]) {
case PUSH:
valueStack[++vsp] = byteCodes[pc+1];
pc += 2; break;
case ADD:
valueStack[vsp-1] = valueStack[vsp] + valueStack[vsp-1];
vsp--; pc++; break;
case NEQ:
if (valueStack[vsp] != 0) pc = byteCodes[pc+1];
else pc += 2;
break;
case RETURN:
return valueStack[vsp];
}
}
}
Previous slide
Next slide
Back to first slide
View graphic version