作业一(编译、汇编、翻译以及方舟编译器)
(1)简述编译程序与翻译程序、汇编程序的联系与区别。
翻译程序是指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。
翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。
另一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程序。
编译程序是先完整编译后运行的程序,如C、C++等;解释程序是一句一句翻译且边翻译边执行的程序,如JavaScript、Python等。
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。
编译程序与汇编程序的区别:如果源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。
如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。
(2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
①词法分析 任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。
单词:是高级语言中有实在意义的最小语法单位,它由字符构成。
词法分析依照词法规则,识别出正确的单词,转换成统一规格,备用。
描述词法规则的有效工具是正规式和有限自动机。
②语法分析
任务:根据语言的语法规则,把单词流组成各类语法单位,如:短语、句子、过程、程序
语法规则:语言的规则,又称为文法;规定单词如何构成短语、语句、过程和程序。
语法规则通常用上下文无关文法描述。
语法分析有两种方法:推导(Derive)和规约(Reduce)
语法分析过程也可以用一棵倒着的树来表示,这棵树叫做分析树
③语义分析
任务:检查程序的语义正确性,以保证程序各部分能有意义的结合在一起,为以后的代码生成阶段收集类型信息
语义分析阶段的重要工作:类型检查
④ 中间代码生成
任务:根据语义规则产生一种介于源语言与目标代码之间的一种中间代码。
中间代码是不依赖于机器但是又便于生成依赖于机器的目标代码的一种结构简单、含义明确的记号系统
中间代码形式
逆波兰式、 四元式、三元式
⑤ 代码优化
任务:对前面产生的中间代码进行加工变换,以期在最后阶段能产生更为高效的目标代码。
原则:等价变换
主要方面:公共子表达式的提取、合并已知量、删除无用语句、循环优化等
⑥ 目标代码生成
任务:把经过优化的中间代码转化成特定 机器上的低级语言代码
目标代码的形式
绝对指令代码:可立即执行的目标代码。
汇编指令代码:汇编语言程序,需要通过汇编程序汇编后才能运行。
可重定位指令代码:先将各目标模块连接起来,确定变量、常数在主存中的位置,装入主存后才能成为可以运行的绝对指令代码。
(3)简述解释程序与编译程序的区别。
解释程序(为高级服务)直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。
编译程序(为高级服务)是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。
编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;
前者产生的目标代码的执行速度比解释程序的执行速度要快;
后者人机交互好,适于初学者使用。用COBOL、FORTRAN等语言编写的程序考虑到执行速度一般都是编译执行。
————————————————
版权声明:本文为CNBLOGS博主蔡云桓的文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
本文链接:https://i.cnblogs.com/EditPosts.aspx?postid=11451992
借鉴链接:https://blog.csdn.net/IWGoo/article/details/85528562
https://www.cnblogs.com/zdcaolei/archive/2012/04/04/2432094.html
https://zhidao.baidu.com/question/202834348.html
转载于:https://www.cnblogs.com/nazhabanma/p/11451992.html
作业一(编译、汇编、翻译以及方舟编译器)相关推荐
- g++ linux 编译开栈_方舟编译器编译hello world踩坑全记录
闲来无事,看到方舟编译器完整开源,于是打算拿来试着编译一个东西来,接下来把踩过的一些坑记录一下. 参考文档 方舟编译器的官网是 OpenArkCompilerwww.openarkcompiler. ...
- 方舟编译器编译linux,华为开源方舟编译器,相关源码已开放下载?
2019华为全球开发者大会将在8月9日-11日在华为松山湖基地召开.本次开发者大会邀请了1500位合作伙伴.5000名全球开发者,将是华为历来规模最大的一次会议.根据此前海报,方舟编译器将成为2019 ...
- 方舟编译器java代码_华为方舟编译器编译工具正式发布
2019 华为全球开发者大会将在 8 月 9 日-11 日在华为松山湖基地召开.本次开发者大会邀请了 1500 位合作伙伴.5000 名全球开发者,将是华为历来规模最大的一次会议.在这次大会上,华为方 ...
- 华为终于放出方舟编译器源代码!开源平台同步亮相,网友:硬核项目
乾明 边策 发自 凹非寺 量子位 报道 | 公众号 QbitAI 华为方舟编译器终于正式开源,源代码放出,兑现了在8月开源的承诺. 代码不在GitHub,而是在自家开源平台上.这也意味着,华为开源平 ...
- 开源的方舟编译器将进入深圳大学课堂
前阵子华为正式开源了方舟编译器,根据介绍,此次开源的是编译器框架部分源码,包括编译器中间表示(IR,Intermediate Representation)和语言编译实现,同时搭配编译器其它二进制组件 ...
- c语言代码闭源,开源被喷,闭源被疑:方舟编译器怎么这么难?
声明:本文来自于微信公众号 InfoQ(ID:infoqchina),作者:赵钰莹,授权站长之家转载发布. 闭源时被质疑是否真的存在这样一个编译器,开源后又被喷技术含量不行,方舟编译器怎么就这么难?本 ...
- 华为“方舟编译器”到底是啥?一文看懂TA如何让手机性能再突破
在华为春季发布盛典上,除了"HUAWEI P30"还有一个词也火了一把,那就是全新黑科技--"华为方舟编译器"! 先花一分钟,戳视频链接简单了解下 方舟编译器虽 ...
- 华为方舟编译器正式开源,采用自主平台托管
前不久华为开发者大会上,华为给出了鸿蒙OS及方舟编译器的开源时间表,这着实让开发者们兴奋了一把.现在华为兑现承诺,8月31日,华为方舟编译器开源官网正式上线了. 方舟开源,自主托管 根据公布的信息,本 ...
- 华为方舟编译器做了些什么,让安卓有了“丝滑”的感觉 ?
友情提示,这是一篇硬货,建议静心阅读. 敲黑板,先来讲几个术语: 1. JIT 全称是Just-in-time,即时编译:当Java字节码运行在JVM上的时候,JVM实时得把字节码编译成机器码就叫JI ...
最新文章
- NOIP 2017 d2t2 70points
- Qt实现Matlab的等差函数linSpace
- C语言实现字符串匹配的Rabin-Karp算法(附完整源码)
- 蔡司数码视疲劳测试软件_居家办公期间,频繁使用电子数码产品小心患上这种眼病...
- java源码编译_java 源码编译
- sql注入之——sqlmap教程
- 计算机的装机配件,京东买的配件怎么装机自己组装教程
- Sap S/4 Hana 和Sap ERP有什么不同
- unity 无法打包
- win10计算机屏幕暗怎么办,Win10电脑屏幕亮度调不了怎么办
- 机会总是留给有准备的人 —— 从裁缝到码农
- EDK2编译环境搭建、编译、在模拟器运行、在笔记本运行(带目录版本)
- rhel配置DNS分析+实验
- mac重启php-fpm
- 【中创福利】有一种年味叫公司发年货
- elementui固定表格头部
- java xml中的冒号_带冒号的xml元素名称
- Mysql error 1045的解决
- js月份的计算公式_JS根据生日月份和日期计算星座的简单实现方法
- R语言大全(后续更新和优化结构)