我在网上的某个地方找到了说"解释器是一个程序,它使用编程语言的基本指令集作为其机器语言来实现或模拟虚拟机。 "在上述引言的上下文中,任何人都可以解释为解释器如何实际执行高级指令吗?在网上找到的教程只涉及抽象的方式,说它一次需要一行并执行。它是否使用机器指令库或如何?我很想知道它。
答案 0 :(得分:0)
解释器查看源代码中的每条指令,然后运行代码以执行该指令。它本身与机器代码无关。
例如,如果您的解释器是用C#编写的,并且源代码说要在数字上加上两个,则解释器最终将调用一个将数字相加的方法。
许多解释器编译为字节码。字节码是比原始源代码可以解析的执行速度更快的指令。因此,我们可能会得到以下字节码:
1,
7,
2
解释器定义这些数字的含义。但是我们可以将第一个数字作为指令。在这种情况下,1表示将数字添加到变量。 7可能是需要添加到变量的索引。 2可能是要添加的数字。因此,您的add函数处理程序可能如下所示:
if (bytecode[current] == 1)
{
int varId = bytecode[++current];
int value = bytecode[++current];
Variables[varId] += value;
}
因此,机器代码由C#编译器生成。解释器代码与机器代码无关。它只是具有执行特定指令的例程。
这也应该说明为什么编译后的代码运行得更快。代替字节码,它将被编译为机器代码。因此,无需在运行时调用处理程序。它将简单地直接执行指令。