现在我开发了一个虚拟机。 Bytecode解释器使用flex和bison。 以下是一些代码:
some:
add r0 4 4
jmp some
我的问题是:如何处理jmp指令? 我可以请求野牛回到标签,继续进行分析吗?
我开发字节码的解释器,而不是编译器......
答案 0 :(得分:0)
因此,在您的情况下,由于您正在为字节码格式解析汇编语言,因此将其转换为实际字节码是有意义的。那时你的解析器看到“add r0 4 4”,它应该做的就是将相应的字节序列附加到包含你的字节码的数组中。然后在解析器创建此数组之后,您可以将其传递给实际执行字节码的函数。
将这两个步骤分成两个独立的程序可能也是有意义的:将源文件转换为二进制字节码文件的汇编程序,以及读取字节码文件并执行它的字节码解释器。后者根本不需要使用Bison,只需读取字节和switch
就可以了。