第一次作业:了解 编译原理

2.作业

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

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

编译程序:先完整编译后运行的程序,比如有C、C++之类的;解释程序是一句一句翻译且边翻译边执行的程序,例如有JavaScriptPython。

汇编程序:是把汇编语言源程序翻译成机器语言程序

编译程序与汇编程序的区别将一段“高级语言”编译成目标语言是诸如汇编语言或机器语言之类的“低级语言”,这个过程的翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这个过程翻译程序称为汇编程序。

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

编译过程主要四个阶段预编译处理编译优化程序汇编程序 链接程序。

预编译处理:把.c 文件转化成.i文件

编译优化程序:把.c/.h文件转换成.s文件

汇编程序:把.s 文件转化成.o文件 

链接程序:把.o文件转化成可执行程序

 

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

编译程序是高级语言转化为低级语言,而解释程序是把某高级语言行解释并控制计算机执行,然后会出现的执行结果,然后再解释下一句。

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

基本思想:

方舟编译器首次在Java领域将虚拟机干掉了,也是软件史上首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销,也彻底告别了虚拟机GC内存回收带来的应用进程掉线,使操作流畅度大幅提升。如果说目前最新的安卓系统是和谐号动车,那么经方舟编译的安卓系统便是高铁,是“复兴号”。

华为手机直接通过方舟编译器替换了Android system-server的所有后台服务,这一项就已经足够让华为EMUI比其他安卓系统更快一步。

技术路线:

该编译器将java和C(JNI)编译成一套可执行文件

输入用户源代码,先将其中java语言进行优化,之后将它转换为C语言(JNI),从而提高执行效率。

影响:

做到混合语言的统一中间表示和完全静态编译,它干掉了虚拟机,消除了JNI开销,告别了GC内存回收的间歇性卡顿,以及其他很多开销。同时,为开发者进行代码优化提供了一个更广阔的舞台


posted on 2019-09-04 11:17  辛苦最怜天上月  阅读(157)  评论(0编辑  收藏  举报

导航