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

时间:2016-03-18 12:37:42

标签: compiler-construction interpreter

翻译的结果是什么?它会将高级语言转换为汇编语言还是机器语言,这是二进制代码?

如果是后者,那是否意味着解释语言与简介集无关?

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

1 个答案:

答案 0 :(得分:0)

  

翻译的结果是什么?

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

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

  

它会将高级语言改为汇编语言还是机器语言,这是二进制代码?

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

  

如果是后者,那是否意味着解释语言与简介集无关?

(我假设您的意思是指令集)。

如果解释器生成汇编代码或机器代码,则必须关心正在运行的CPU的指令集。如果没有,则不会。

  

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

不,同一种语言可以拥有人们愿意写的不同的口译员和编制者。一种语言有多种口译员并不罕见。

  

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

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