了解编译原理 第一次作业

1.简述编译程序与翻译程序、汇编程序的联系与区别。

编译程序是先完整编译后运行的程序;翻译程序是指把高级语言源程序翻译成机器语言源程序的软件;汇编程序是把汇编语言源程序翻译成机器语言的程序。

编译程序与汇编程序的区别:如果源语言“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序 称为汇编程序。

2.编译过程包括哪几个主要阶段及每个阶段的主要功能。

编译过程通常分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个主要阶段。

词法分析:读入源程序,对构成源程序的字符流进行扫描和分解,识别出一个个单词,并表示成计算机内部的形式。

语法分析:在词法分析的基础上,将单词序列分解成各类语法短语,确定整个输入串是否构成语法上正确的程序。

语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息。

中间代码生成:将源程序翻译成一种复杂性介于源程序与目标程序之间的内部形式。

代码优化:对前阶段产生的中间代码进行等价交换,目的是使将来生成的目标代码更为高效。
目标代码生成:把中间代码变换成待定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。

3.简述解释程序与编译程序的区别。

编译程序能生成目标程序,而解释程序不能;编译程序是整体编译完了,再一次性执行,而解释程序是一边解释,一边执行,
不生成目标程序。

(4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。

基本思想:方舟编译器支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。方舟编译器是完全替代语言虚拟机的静态编译器,完全不需要解释器。兼顾Java开发效率和C语言运行效率的编译器。
技术路线:方舟编译器是一种静态的编译方式;和传统的安卓系统相比,方舟编译器可以节省很多程序,提高程序执行的效率。
方舟编译器的静态编译方式可将语言里的动态特性直接翻译成机器码,彻底消除虚拟机的弊病,带来效率上的极大提升。

方舟编译器是在开发环境部署的编译器,而现有编译过程,主要发生在手机上,带来额外的资源消耗。
对安卓生态的影响:能够有效解决安卓程序“边解释边执行”的低效率问题。华为方舟编译器采用全程执行机器码高效运行程序,架构进一步得到优化,性能也有明显提升。相较与此前流畅度,通过华为方舟编译器编译后的程序系统,操作流畅度提升24%,系统响应速度提升44%,三方应用操作流畅度提升60%。

猜你喜欢

转载自www.cnblogs.com/cong1/p/11457885.html