Compiler construction CPU对于解释器的作用是什么?

Compiler construction CPU对于解释器的作用是什么?,compiler-construction,cpu,interpreter,Compiler Construction,Cpu,Interpreter,我知道编译器采用高级语言,将所有语言翻译成机器语言(或者先是汇编语言,然后是机器语言?),发送到CPU,现在CPU的任务是实际运行它并显示输出/执行任何操作 我知道在解释器的情况下,它将高级程序的第一行翻译成某种东西(这是什么东西?是机器级语言吗?),然后执行和运行某种东西(由解释器或CPU执行和运行?)。然后它进入下一行代码,依此类推 因此,简而言之,对于CPU在解释器中的作用,我有点困惑。编译语言和解释语言之间的CPU没有区别。将源代码转换成CPU能够理解的东西也会采取同样的步骤——这只是时

我知道编译器采用高级语言,将所有语言翻译成机器语言(或者先是汇编语言,然后是机器语言?),发送到CPU,现在CPU的任务是实际运行它并显示输出/执行任何操作

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


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

编译语言和解释语言之间的CPU没有区别。将源代码转换成CPU能够理解的东西也会采取同样的步骤——这只是时间的问题

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


事实上,编译语言和解释语言之间甚至没有严格的区别。考虑java,它是从源代码到字节代码的时间提前编译的。在运行时,JVM会再次解释该字节码,JIT可能会进一步编译和优化该字节码。

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

我认为询问程序是“由解释器执行还是由CPU执行”是没有意义的。CPU正在运行解释器。这就像是问你有什么样的想法可以不涉及大脑,这是不同的。不同的技术使用不同的方法,所以我认为任何答案都只会在较高和抽象的层次上是正确的。你可以用谷歌搜索你想要的东西;维基百科关于这一点的文章非常有趣: