编译原理 一

2019-09-04 11:19:07

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

编译程序:把一种语言书写的程序翻译成汇编语言或机器语言那样的低级语言。

翻译程序:把一种语言书写的程序翻译成与之等价的另一种语言的目标程序。

汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。

三者都是对语言的翻译过程,目的就是把程序翻译成计算机能够识别的语言。

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

1.词法分析
这个阶段的主要任务就是从左到右一个字符一个字符的读入源程序,对构成源程序
的字符流进行扫描和分解,从而识别出一组紧密相连的zfu的集体含义。
2.语法分析
这个阶段的主要任务就是在词法分析的基础上将单词序列分解成各类语法短语。
3.语义分析
语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。
4.中间代码生成
在进行了上述的语法分析和语义分析阶段之后,有的编译程序将源程序变成一种内部形式,
这种内部形式表述形式就是中间代码。
5.代码优化
对中间代码进行变化和改造,使生成的目标代码更为高效。
6.目标代码生成
这个阶段的任务就是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或
汇编指令代码。

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

编译程序是先编译程序生成目标程序,再运行程序进行输入输出,解释程序省略生成目标程
序的步骤。

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

基本思想:采取了静态编译的方式,镶嵌于系统的底层,将所有的代码都提前编译成机器码,使程序直接在手机CPU上运
行。同时利用多线程的原理,使程序一边运行边回收垃圾,程序运行不中断,垃圾回收不停,
提高了cpu的运行效率
技术路线:
支持多语言联合优化的编译,在面对采用混合语言开发的安卓应用,方舟编译器可以在开发环
境中编译成统一的流程,通过统一的程序表示和优化来执行,效率更高。
对安卓软件生态的影响:
华为方舟编译器采取了静态编译的方式,将现有的一边使用一边翻译的过程高效化,大幅度缩
减设备读懂执行代码的过程,从而最终获得更加高效的编译语言速度,使得用户指令响应速度
得以提升,手机运行应用APP自然也就更迅速不卡顿了!如果说华为方舟编译器的诞生仅仅是为
了服务于华为自己,即便有着确实不错的体验效果,也不能称之为具有历史性意义的一步。在华
为方舟编译器对外公布之时,华为就同时宣布将这一技术开源,并且热切希望有更多的应用程序
厂商,安卓手机厂商,开源社区的开发者一同加入进来。也就是说华为方舟编译器的存在价值,
绝不仅仅只是为了华为自己的前进。

原文地址:https://www.cnblogs.com/huangwenshuo/p/11457926.html

时间: 2024-10-09 00:36:17

编译原理 一的相关文章

编译原理123

1.编译原理就是什么? 个人理解,编译就是像翻译一样,将一种语言翻译成另一种语言,编译就是将高级语言或汇编语言翻译成电脑能识别的二进制机器语言,编译原理就是讲解这 个编译的过程.内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 编译原理是计算机专业设置的一门重要的专业课程.虽然只有少数人从事编译方面的工作,但是这门课在理论.技术.方法上都对学生提供了系统而有效的训练,有 利于提高软件人员的素质和能力. 2.学习编译原理有什么好处? 学习编译原

编译原理的理解

编译原理内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成.大一点的应用可以做到一定的技术先进性,从而让你在本行业站稳脚跟:分析和分解用户输入的SQL语句,理解是否有害和是否有SQL注入等.如果不学,对于不是不是本行业的人来说就没损失,如果是本行业的专业人士,不学只会令自己的编译理解更慢.

编译原理

1.编译原理是什么? (1)就是对程序语言进行翻译: (2)介绍编译程序构造的原理和基本方法: (3)从本质上讲是一个算法问题: 2.学习编译原理有什么好处? (1)接触一些新的算法,如,贪心算法,图论算法等: (2)学习一些新的思想,如,有限状态机,递归下降等: (3)多了一项技能: 3.不学有什么损失? (1)将来出社会可能比较难混: (2)不学好这门课程期末可能不及格: (3)有学不一定有用,不学肯定没用: 4.如何学习编译原理? (1)上课跟上老师的步伐,课前预习,课后复习: (2)多从

编译原理第二次作业 编译器任务总结

在学习了编译原理后我开始明白编译的工作原理了,也更了解编译语言的结构.明白了编译器的编写中需要注意的各项问题,更了解了编译器的编译过程为我之后的编程提供了一些必不可少的经验,还是我的改错能力有所提高.因为写编译器使我在编程发生错误后能及时了解程序在编译过程中的原理是什么,这样我就能知道我的程序是何处的问题. 而且在学习编译原理的时候,学到了一些比较难理解的东西,通过实践不断地消化书本上的理论,最终就会有一个雏形出现.而且在编写的过程时候有一些不知道如何解决的问题时,我就会和组员讨论以得出一个可行

编译原理简单介绍

编译原理学习导论 大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容.编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂.我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了.在20世纪50年代,编译器的编写一直被认为是十分困难的事情,第

编译原理基础概念介绍

关于编译原理 语法树 句柄 简单短语 短语 的区分,通过两个例子来理解概念以及方法: 例子1——语法树 S -> a|b|(T)  T -> TdS|S Vt={a,b,d,(,)}.Vn={S,T},S是开始符 句型(Sd(T)db)是S的一个推导,其中___是句柄;____是最左素短语:____是该句型的直接短语,_____是短语.     素短语的概念:它是一个递归的定义,至少含有一个终结符,并且除它自身之外不再含任何更小的素短语,所谓最左素短语就是处于句型最左边的素短语的短语.而一个算

编译原理之扫描器

https://github.com/zzusunjs/Scanner 编译原理实验课要求自己实现一个简单一些的扫描器. 我是用c++实现的.具体的原理的话,完全是按照书上的算法实现的,也没有什么特别难懂的地方,不过想要写的比较完备的话还是有一定难度的. Go ->  preProcess() -> init() -> delete-space() ->  Scanner() -> 首字符 ->.... 代码大致的结构就是上面的那个样子.

python实现算术表达式的词法语法语义分析(编译原理应用)

本学期编译原理的一个大作业,我的选题是算术表达式的词法语法语义分析,当时由于学得比较渣,只用了递归下降的方法进行了分析. 首先,用户输入算术表达式,其中算术表达式可以包含基本运算符,括号,数字,以及用户自定义变量. 词法分析,检查单词变量是否正确:语法分析,检查算术表达式语法是否正确并输出生成语法树:语义分析,输出四元表达式. 最终效果图: 例如输入: 词法分析结果: 语法分析结果: 语义分析结果: 算术表达式的组成语法如下: 无符号整数 = 〈数字〉{〈数字〉} 〈标识符〉= 〈字母〉{〈字母

编译原理的实验报告一

实验一 词法分析程序实验 专业 商软2班   姓名 黄仲浩  学号 201506110166 一. 实验目的      编制一个词法分析程序. 二. 实验内容和要求 输入:源程序字符串 输出:二元组(种别,单词符号本身). 三. 实验方法.步骤及结果测试 源程序名:bianyiyuanli.c 可执行程序名:bianyiyuanli.exe 原理分析及流程图 通过一些for循环和while循环进行一个个的翻译. 源程序如下: #include<stdio.h> #include<stri

软考(编译原理)

软件设计师考试编译原理部分,笔记记录.分享.2016-09-14