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

Compiler construction 解释语言的解释器和编译器,compiler-construction,interpreter,Compiler Construction,Interpreter,翻译的结果是什么?它会把高级语言变成汇编语言还是机器语言,即二进制代码 如果是后者,这是否意味着解释语言与介绍集没有关系 一种语言只能有一个口译员?是因为解释器不做任何优化,所以我们不需要找到更好的解释器吗 翻译的结果是什么 解释器的结果就是被解释程序的结果。因此,如果您让程序打印“hello”,运行解释器的结果是“hello”被打印到屏幕上 这就是解释器与编译器的区别,解释器的结果是一个可执行文件,只有在运行该文件时,“hello”才会打印到屏幕上 它会把高级语言变成汇编语言还是机器语言,即二

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

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

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

翻译的结果是什么

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

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

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

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

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

(我想你指的是指令集)

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

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

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

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


不需要。解释器可以也确实执行优化,但通常比编译器少,因为没有单独的编译步骤,优化所花费的任何时间都会增加程序的启动时间。

如果解释器只生成汇编代码以外的字节码,它是否也可以在不使用寄存器的情况下进行算术运算?@Jutta对,解释器不会以任何方式显式地与CPU寄存器交互。当然,解释器本身可能会被编译成机器代码,因此这些值在某个时候仍然会出现在寄存器中。