在我正在编写的虚拟机中,我希望能够以类似于以下伪代码的方式调度命令。
add: reg[memory[pc+1]] = reg[memory[pc+1]] + reg[memory[pc+2]]; pc += 2; goto done;
sub: reg[memory[pc+1]] = reg[memory[pc+1]] - reg[memory[pc+2]]; pc += 2; goto done;
cmp: /* Would take more space than simply x = x + y; */ goto done;
for(int pc = 0; memory[pc] != END; pc++) {
goto currentPositionInMemorySomehow + (memory[pc] * lengthOfInstruction);
done:
}
其中 memory 是一个包含字节码的数组,而 pc 是一个程序计数器。然而,要做到这一点需要我们跳转到的每个位置在下一个块之前具有完全相同数量的指令。下拉到汇编不是一种选择,除非有一个很棒的平台无关的汇编代码,它允许使用相同的代码并编译到 Linux、Mac 和 Windows。无论每个处理器都位于哪个处理器之上。任何和所有的帮助将不胜感激。