【问题标题】:What is the role of the CPU for an interpreter? [closed]CPU对于解释器的作用是什么? [关闭]
【发布时间】:2013-08-08 16:26:57
【问题描述】:

我知道编译器采用高级语言,将其全部翻译成机器语言(还是先是汇编语言,然后是机器语言?),发送到 CPU,现在实际运行它是 CPU 的工作并显示输出/做任何事情。

我知道在解释器的情况下,它将高级程序的第一行翻译成某种东西(这是什么东西?它是机器级语言吗?)然后某些东西被执行和运行(由解释器执行和运行还是由 CPU ?)。之后进入下一行代码,以此类推。

所以简而言之,我对 CPU 在解释器中的作用有点困惑。

【问题讨论】:

  • 我认为询问程序是“由解释器还是由 CPU”执行的没有意义。 CPU 正在运行解释器。这就像问你能有什么样的想法不涉及大脑。
  • 情况不同。不同的技术使用不同的方法,所以我认为任何答案都只会在较高和抽象的层面上是正确的。你可以用谷歌搜索你想要的东西;维基百科的文章很有趣:en.wikipedia.org/wiki/Interpreter_(computing)

标签: compiler-construction cpu interpreter


【解决方案1】:

编译语言和解释语言的 CPU 没有区别。将源代码转换为 CPU 可以理解的内容的步骤相同——这只是何时的问题。

对于编译型语言,这是提前完成的。对于解释型语言,它发生在运行时。

事实上,编译语言和解释语言之间甚至没有一成不变的区别。以 Java 为例,它提前从源代码编译为字节码。在运行时,该字节码被 JVM 再次解释,并且可以被 JIT 进一步编译和优化。

【讨论】:

    【解决方案2】:

    这是一个非常明智的问题。答案是灰色阴影。这完全取决于解释器中内置了多少运行时环境。运行时必须存储变量等的状态,但它可能会按照您的建议执行并将程序的一行转换为机器代码,然后执行该代码。另一方面,它可能使用更高级别的内部表示来执行代码并调用运行该代码的进程。例如 Python 和 Ruby 生成它们自己的内部代码表示,然后传递给运行时。 Java 是一个编译器,但将整个程序转换为字节码,然后由运行时执行。所以没有一个简单的黑白答案,但这是帮助理解正在发生的事情的正确问题。

    【讨论】:

      猜你喜欢
      • 2016-02-18
      • 2010-10-09
      • 2021-09-07
      • 2014-09-25
      • 2016-05-31
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多