JAVA这一类半编译语言的设计目标是解决程序的移植问题,也就是在不同型号的CPU上运行,另一种解决移植问题的办法是不编译,让程序解释执行,比如PHP语言,显然,半编译方式比解释方式快,而全编译方式快但必须针对不同型号的CPU编译。于是有人提出了中间表示(IR)的概念,程序被编译成IR,再被进一步编译成机器码,这样程序不必用其它语言重写,而是交给编译器,这就要求这个编译器能识别多种语言,并能把它们编译成lR,实际上这是一整套工具,有人已经做好了主框架,新语言的设计者只须编写编译器的前端,而新CPU的生产商只须编写编译器的后端。所谓前端,就是语言的词法扫描和文法分析程序,而后端就是把IR翻译成机器码的过程。现在写编译器已经是一个相对容易的事了,因为有人已经把大部分工作都做了,大家谷歌一下一个叫LLVM的东西就能理解我所说的了。

0 顶 2020-11-14 09:51:22