作业一:了解编译原理
(1)简述编译程序与翻译程序、汇编程序的联系与区别。
答:编译程序是现代计算机系统的基本组成部分之一,而且多数计算机系统都配有不止一种高级语言的编译程序,对有些高级语言甚至配置了几个不同性能的编译程序。从功能上看,一个编译程序就是一个语言翻译程序。语言翻译程序把一种语言书写的程序翻译成另一种语言感觉的等价程序。比如,汇编程序是一个翻译程序,它把汇编语言程序翻译成机器语言程序。
(2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
答:主要阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。
主要功能:词法分析的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。
语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语。
语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。
代码优化是对前一阶段产生的中间代码进行变换,目的是使生成的目标代码更为高效。
目标代码生成是把中间代码变换成特定计算机上的绝对指令代码或汇编指令代码。
(3)简述解释程序与编译程序的区别。
答:编译程序是一个语言处理程序,将源码翻译为二进制可执行程序或字节码文件,这个二进制代码程序在。解释程序不需要在运行前先把源程序翻译成目标代码,也可以实现在某台机器上运行程序并出现结果。
(4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。
答:方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。智能时代,万物互联,多设备互联互通的发展趋势。华为方舟编译器正顺应了这一趋势。