作业1了解编译原理

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

答:一个编译程序就是一个语言翻译程序。

  翻译程序是把一种语言书写的程序翻译成另一种语言的等价程序。

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

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

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

答:词法分析:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词

  语法分析:在词法分析的基础上将单词序列分解成各类语法短语

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

  中间代码生成:将源程序变成一种内部表示形式

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

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

答:编译程序:它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。

  解释程序:它的执行过程是翻译一句执行一句,并且不会生成目标程序

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

答:华为方舟编译器的优势:多语言联合、轻量运行时、软硬件协同、多平台支持。 

  华为方舟编译器会通过静态编译的方式转换成机器码再安装,无需麻烦虚拟机,提升运行速度和效率,有效解决安卓程序“边解释边执行”的低效率问题。