编译原理概述(第一次作业)

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

编译程序是由编译器将高级语言(例如c++,c等)转变成汇编语言。

汇编程序是由汇编器将汇编语言转变成目标语言(也就是机器语言)。

而翻译程序是将一种高级语言(例如c++)由翻译器转变成另一种高级语言(例如c语言)。

 

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

编译过程主要包括预编译处理(.c) -->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)--> 链接程序(.exe、.elf、.axf等)这四个阶段。

这四个阶段的主要功能分别如下:

 预编译 

将.c 文件转化成.i文件 使用的gcc命令是:gcc–E 对应于预处理命令cpp 

编译: 

将.c/.h文件转换成.s文件 使用的gcc命令是:gcc–S 对应于编译命令 cc –S

汇编 :

将.s 文件转化成.o文件 使用的gcc 命令是:gcc–c 对应于汇编命令是 as

 链接:

将.o文件转化成可执行程序 使用的gcc命令是: gcc 对应于链接命令是 ld

 

 

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

编译程序是专指将高级语言变成低级语言,而解释程序是指接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。

编译程序是将源程序进行编译之后最终转变成目标程序然后输入数据执行得出计算结果。而解释程序则是同时输入数据和源程序进行解释然后得出计算结果。

这二者各有优劣,说不上谁更好,只是在不同的时候适用。

编译器:工作效率高,即时间快、空间省;交互性与动态特性差、可移植性差。大多数PL采用此种方法翻译

解释器:工作效率低,即时间慢、空间费;交互性与动态特性好、可移植性好。早期的Basic和现在的Java等。

 

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

当前的安卓系统使用Java作为编程语言,易于开发,但是不会将代码直接编译成机器语言,程序运行时有相当一部分代码还需要通过手机上的虚拟机临时同步编译,影响程序执行的效率。华为方舟编译器采取了静态编译的方式,是首个取代了安卓虚拟机模式的静态编译器。华为方舟编译器采用全程执行机器码高效运行程序,架构进一步得到优化。理论上性能也有明显提升 ,能够有效解决安卓程序“边解释边执行”的低效率问题。

方舟编译器并不是为了“填补XXXX空白”,而是为了在不改变现有代码和编程习惯的基础上进行编译的优化,使得APP的运行更加流畅,方舟编译器的最终的目的是成为一个跨硬件平台、跨系统、跨语言的软件编译平台。编译器是一个桥梁,连接着上层的开发语言与底层硬件,又与操作系统紧密结合,掌握了编译器,更换开发语言,更换硬件架构甚至更换操作系统都会有很大的帮助。值得注意的华为成立的“编译器与编程语言实验室”从名字来看除了编译器还有编程语言,因为设计的原因JAVA脱离虚拟机后并非最好的开发语言,与其它语言的连接再如何优化也没有同一个语言方便,所以推出一个自己的编程语言可能是最佳的选择,然而这一步可能更加艰难,因为程序员要为此改变编程习惯。

拥有自己的编程语言,甚至在操作系统、硬件架构方面有所作为目前仅仅是幻想,也许有一天会实现,梦总是要有的。抛去幻想,面对现实,方舟编译器同样有着非常重大的意义。

  1. 锻炼人才:编译器的开发需要扎实的基本功,需要对编程语言和底层硬件都非常的熟悉,能够锻炼一批人才这是毋庸置疑的,这些技术人才是公司宝贵的财富。
  2. 为Android注入新活力:Android的诞生和维护主要归功于谷歌,虽然随着版本的迭代一直在进步但是多年来始终没有打破固有框架也因此无法再进一步,方舟编译器的出现显然为Android提供了另一种可能,华为已经从几年前的使用者变成了重要贡献者。
  3. 更好的用户体验:Android的生态需要谷歌、手机厂家、App开发商共同维护才能给消费者更好的体验,这点在国内尤其突出,绿色联盟和统一推送联盟在着手治理App生态乱象,方舟编译器则是从系统框架层面提供了更深一层的优化。
  4. 提高效率:华为在ICT领域涉及的业务众多,芯片、Server、终端、IoT、云、通信,涉及的硬件和软件系统也很多,如果能够有一个统一的软件开发平台对自己本身也是非常好的,从芯片到编译器再到系统这种高度整合的软硬件一体化可以带来最佳的效果。

转载于:https://www.cnblogs.com/zghs/p/11451746.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值