了解编译原理

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

  编译程序将源语言源程序作为输入,将语句解释成指令执行,得到结果。翻译程序是把源程序翻译成目标程序的语言处理程序,翻译程序有两种:一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程序一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。汇编程序是将汇编指令转换为机器语言,低级语言,可以用来直 接控制硬件

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

  编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。

  词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字(begin、end、if、for、while),标识符、常数、运算符和界符(标点符号、左右括号)。

  语法分析:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“短语”、“句子”、“程序段”和“程序”等。

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

  中间代码生成:一种含义明确、便于处理的记号系统,它通常独立于具体的硬件。这种记号系统或者与现代计算机的指令形式有某种程度的接近,或者能够比较容易地把它变换成现代计算机的机器指令。

  代码优化:对前一阶段产生的中间代码进行变换或进行改造,使生成的目标代码更为高效。

  目标代码生成:把中间代码变成待定机器上的绝对指令代码或可重定位的指令代码或者汇编指令代码。

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

        解释程序是一边解释,一边执行,不形成目标程序;而编译程序是整体编译完了,再一次性执行。编译把源程序一起编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快,而且解释程序只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。

 

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

  方舟编译器能改善安卓应用编译效率,从原先的边解释边执行转变为全程机器码高效运行程序。华为的方舟编译器,就是将安卓应用开发者们所使用的JAVA、C/C++们转换成机器代码。方舟编译器的出现使得华为从几年前的使用者变成了重要贡献者,使得各方面手机体验流畅度大大提升。

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