1.简述编译程序与翻译程序、汇编程序的联系与区别。程序员
答: 翻译程序是指把高级语言源程序翻译成机器语言源程序的软件。编程
翻译程序有两种:一种是编译程序,它将高级语言源程序一次性所有翻译成目标程序,每次执行程序时,只要执行目标程序。另外一种是解释程序,它的执行过程是翻译一句执行一句,而且不会生成目标程序。多线程
编译程序是先完整编译后运行的程序;解释程序是一句一句翻译且边翻译边执行的程序。编程语言
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。性能
汇编程序:翻译汇编语言源程序,产出基本就是二进制机器指令。 编译程序:会产生目标程序,真正执行、运行的是目标程序。优化
2.编译过程包括哪几个主要阶段及每一个阶段的主要功能。spa
答:编译过程一般分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个主要阶段。各个阶段的主要功能以下:线程
词法分析阶段:读入源程序,对构成源程序的字符流进行扫描和分解,识别出一个个单词,并表示成计算机内部的形式。翻译
语法分析阶段:在词法分析的基础上,将单词序列分解成各种语法短语,肯定整个输入串是否构成语法上正确的程序。内存
语义分析阶段:审查源程序有无语义错误,为代码生成阶段收集类型信息。
中间代码生成阶段:将源程序翻译成一种复杂性介于源程序与目标程序之间的内部形式(中间代码)。
代码优化:对前阶段产生的中间代码进行等价交换,目的是使未来生成的目标代码更为高效。
目标代码生成:把中间代码变换成待定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
3.简述解释程序与编译程序的区别。
答:编译程序能生成目标程序,而解释程序不能。
编译程序是总体编译完了,再一次性执行。而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不造成目标程序。就像外语翻译中的“口译”同样,说一句翻一句,不产生全文的翻译文本。
4.了解新开源的华为方舟编译器,理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。
答:编译器是链接人类世界与机器世界之间的一座桥梁,任何在手机上的程序都须要经历软件开发的过程,软件开发使用的语言是易于程序员理解的高级语言,程序在手机上运行须要转换成能够高效执行的机器码,这样的转换过程就是由编译器完成的。能够说编译器是用来生成软件的软件,是链接软件与芯片的桥梁,其性能,效率直接影响到最基础的消费者体验。
安卓系统使用Java做为编程语言,易于开发,可是不会将代码直接编译成机器语言,程序运行时有至关一部分代码还须要经过手机上的虚拟机临时同步编译,影响程序执行的效率。华为方舟编译器采起了静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。
如今安卓手机的一大特点就是内存愈来愈大,6GB都是老人机的配置了。这除了程序大之外还有安卓的程序运行产生垃圾多有关系。那么清理垃圾呢?则须要暂停程序,也就会顿一下,即所谓的“卡”。华为方舟编译器则是利用程序多线程运行的特色。打个比方,您如今正在用的“中关村在线”这个APP用了AB两个线程,在华为的P30手机中,那么线程A运行的时候,B在清理垃圾,而后A线程清理垃圾的时候B线程在运行,程序运行不中断,垃圾处理不停,作到了又连贯、又节约系统资源,大幅度提升安卓软件的运行速度。