了解编译原理课堂作业

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

翻译程序是指把高级语言源程序翻译成机目标代码的软件。

翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。另一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程序。

编译程序是先完整编译后运行的程序,如CC++等;解释程序是一句一句翻译且边翻译边执行的程序,如JavaScriptPython等。附C语言编译链接过程:

汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。

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

2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
编译过程包括词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成5个阶段。
 词法分析的功能是对输入的高级语言源程序进行词法分析,识别其中的单词符号,确定它们种类然后交给语法分析器,即把字符串形式的源程序分解为单词符号串形式。
 语法分析的功能是在词法分析结果的基础上,运用语言的语法规则,对程序进行语法分析,识别构成程序的各类语法范畴以及它们之间的层次关系,并把这种层次关系表达成语法树的形式。
 语义分析和中介代码的生成的功能是在语法分析的基础上,对程序进行语义分析,理解其含义,产生出表达程序语义的内部表达形式,即中间代码。
 优化的功能是按照等价变换的原则,对语义分析器产生中间代码序进行等价交换,删除其中多余的操作,对耗时耗空间的代码进行优化,以得到最高效的可执行代码。
 目标代码生成的功能是把优化后的中间代码变换成机器指令代码,得到可在目标机器上执行的机器语言程序。

3)简述解释程序与编译程序的区别。
编译程序产生极其语言形式的目标程序,而解释程序不产生。

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

 方舟编译器是华为专门为软件厂商开发的一款编译器,能够有效解决安卓程序“边解释边执行”的低效率问题。华为方舟编译器采用全程执行机器码高效运行程序,架构进一步得到优化,性能也有明显提升。另一方面,方舟编译器用空间换性能,直接将编译器的代码优化搬到了开发者环境,不再被手机端的硬件资源所限制,为代码优化提供了无限可能。方舟编译器通过编译阶段和运行阶段的双向加持,将静态编译动态语义最大的两大难点一一解决:一是设计数据模型,二是如何在运行时高效获得动态信息。

你可能感兴趣的:(了解编译原理课堂作业)