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

解释语言和编译器的解释器

阎咏思
2023-03-14

翻译的结果是什么?它会把高级语言变成汇编语言还是机器语言,即二进制代码?

如果是后者,这是否意味着解释语言与介绍集没有关系?

一种语言只能有一个口译员?是因为解释器不做任何优化,所以我们不需要找到更好的解释器吗?

共有1个答案

江洲
2023-03-14

翻译的结果是什么?

解释器的结果就是被解释程序的结果。因此,如果您让程序打印“hello”,那么运行解释器的结果就是“hello”被打印到屏幕上。

这就是解释器与编译器的区别,编译器的结果是一个可执行文件,只有在运行该文件时,“你好”才会打印到屏幕上。

它会把高级语言变成汇编语言还是机器语言,即二进制代码?

可能是这样的(如果您对“解释器”的定义包括JIT编译器),但解释器通常只生成中间字节码,然后对其进行解释,而不生成汇编代码或机器代码。基本解释器可能不会生成任何类型的代码,而是直接执行源代码。

如果是后者,这是否意味着解释语言与介绍集没有关系?

(我想你指的是指令集)。

如果解释器生成汇编或机器代码,它将不得不关心运行它的CPU的指令集。如果没有,它就不会。

一种语言只能有一个口译员?

不,同一种语言可以有许多不同的口译员和编译器,只要人们愿意写。一种语言有多个口译员并不罕见。

是因为解释器不做任何优化,所以我们不需要找到更好的解释器吗?

不。解释器可以并且确实执行优化,尽管通常比编译器少,因为由于没有单独的编译步骤,因此在优化上花费的任何时间都会增加程序的启动时间。

 类似资料:
  • 主要内容:编译型语言,解释型语言,总结通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别。源码要想执行,必须先转换成二进制指令。 所谓二进制指令,也就是由 0 和 1 组成的机器码,能被计算机直接识别并执行。 然而,究竟在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定: 有的编程语言要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(比如 W

  • 问题内容: 我正在学习Java,以下内容对我来说有些混乱。我了解的是: Java编译器 →Java编译器仅将程序转换为文件,这意味着将我们的源代码转换为字节码(这是使Java平台独立的虚拟机(JVM)的操作码的列表)。 Java Interpreter →仅“解释”代码,而 没有 将其转换为本地机器代码。它将一条字节码的每条指令作为一条命令一一执行并执行,而不管同一条指令出现多少次。这就是为什么它

  • 我正在学习Java,下面的事情让我有点困惑。我的理解是: > Java编译器→Java编译器只是将程序转换为文件,这意味着将我们的源代码转换为字节码(它是虚拟机(JVM)的操作代码列表,使Java平台独立)。 Java解释器→只是“解释”代码,而不是将其转换为本机机器代码。它将字节码的每一条指令作为命令逐一执行并执行,而不管同一条指令发生多少次。这就是为什么它很慢,Java引入了JIT概念。 JI

  • 本文向大家介绍简述解释型和编译型编程语言相关面试题,主要包含被问及简述解释型和编译型编程语言时的应答技巧和注意事项,需要的朋友参考一下  

  • 问题内容: 为什么我们说Java是一种编译和解释语言? (编译和解释)这样做有什么好处? 问题答案: Java在编译时被编译为中间的“字节码”。这与像C之类的语言在编译时被编译为机器语言相反。Java字节代码无法像编译的C代码那样直接在硬件上执行。相反,字节码必须在运行时由JVM(Java虚拟机)解释才能执行。像C这样的语言的主要缺点是,当编译该二进制文件时,该二进制文件将仅在一种特定的体系结构(

  • 那么,让我看看我是否明白了这一点。 > 当我们说编译器和解释器之间的区别时,解释器将高级指令翻译成中间形式,然后执行。[我认为编译器也将高级指令翻译成中间形式,但此刻它生成目标代码而不是执行它,对吗?] 解释器一次读取一条指令或一行的源代码,将该行转换为机器代码并执行它。[解释器本身不会将代码转换为机器代码,它会使用ist自己的预编译函数评估指令(在解析之后)。例如,高级语言中的Add表达式将使用