当前位置: 首页 > 知识库问答 >
问题:

口译员如何使用机器指令?

曹臻
2023-03-14

我在网上的某个地方发现这样一句话:“解释器是一个程序,它使用编程语言的基本指令集作为其机器语言来实现或模拟虚拟机。”在上述引用的上下文中,有人能解释一下解释器是如何实际完成高级指令的执行的吗?网上的教程只涉及抽象的方式,即一次只需要一行代码就可以执行。它是使用机器指令库还是如何使用?我很想知道这件事。

共有1个答案

步建茗
2023-03-14

解释器查看源代码中的每条指令,然后运行代码来执行该指令。它与机器代码无关。

例如,如果您的解释器是用C#编写的,并且源代码说要将两个数字相加,那么解释器最终会调用一个方法来相加数字。

许多解释器编译成字节码。字节码是一种执行速度比原始源代码的解析速度快得多的指令。因此,我们可能会得到以下字节码:

1,
7,
2

解释器定义这些数字的含义。但我们可以让第一个数字成为指令。在这种情况下,1表示向变量中添加一个数字。7可以是需要添加到的变量的索引。2可以是要添加的数字。因此,add函数的处理程序可以如下所示:

if (bytecode[current] == 1)
{
    int varId = bytecode[++current];
    int value = bytecode[++current];
    Variables[varId] += value;
}

因此,机器代码是由C编译器生成的。解释器代码不关心机器代码。它只有一个例程来执行特定的指令。

这也应该说明为什么编译后的代码运行得更快。它将被编译为机器代码,而不是字节码。因此无需在运行时调用处理程序。它可以简单地直接执行指令。

 类似资料:
  • PyCharm包含解释器,可以根据需要创建具有新功能的新项目。 您可以根据需要在系统中创建虚拟环境。 您还可以在对话框中继承全局站点包。 Python包索引(PyPI)上提供了解释器,可以使用pip install.轻松安装和访问pip install. 创建口译员 对于创建解释器,始终建议创建一个管理所需配置的新项目。 请查看以下屏幕截图以获得更好的理解 - 这些参数包括 - 位置 - 这描述了

  • 问题内容: 这是从运行脚本以检查Tensorflow是否正常运行时收到的消息: 我注意到它提到了SSE4.2和AVX, 什么是SSE4.2和AVX? 这些SSE4.2和AVX如何改善Tensorflow任务的CPU计算。 如何使用这两个库使Tensorflow进行编译? 问题答案: 我只是遇到了同样的问题,似乎的建议并未涵盖SSE4.2支持,添加就足够了。最后,我成功建立了 没有任何警告或错误。

  • 为了在运行windows 7 pro的intel core 2上完成一些cmov指令,我编写了以下代码。它所做的就是从控制台获取一个字符串作为输入,应用一些移位操作来生成一个随机种子,然后将该种子传递给srand,以生成一个小的伪随机数数组。然后评估伪随机数是否满足谓词函数(更任意的位随机),并输出“*”或“\u1”。实验的目的是生成cmov指令,但正如您在下面的反汇编中所看到的,没有。 有没有关

  • 我一直在弄清楚口译员的确切工作方式,在谷歌上搜索了一下,得出了一些结论,只是希望有人能纠正一下,让我更好地了解口译员的工作。 所以我的理解是: 解释器是一种将代码从高级语言转换为机器格式的软件程序 现在我仍然不清楚中间发生的子过程,即。 解释器产生中间代码 然后优化解释的代码 然后生成目标代码 并最终执行 还有一些问题: 那么解释器是否单独负责生成目标代码?并执行它? 执行是否意味着它在JVM或底

  • 问题内容: 即时编译器和解释器之间有什么区别,.NET和Java JIT编译器之间有什么区别? 问题答案: 即时编译是在执行之前将非本机代码(例如字节码)转换为本机代码。 从维基百科: JIT基于运行时环境中的两个较早的想法:字节码编译和动态编译。它在本地执行代码之前先在运行时将其转换,例如将字节码转换为本地机器代码。 一种解释执行程序。它可能有也可能没有抖动。 同样,来自维基百科: 解释器可能是