首页 > 其他分享 >编译技术:练习1

编译技术:练习1

时间:2022-08-31 09:58:26浏览次数:44  
标签:中间代码 语言 练习 技术 目标程序 编译 源语言 源程序

1 解释下列名词术语:源程序、目标程序、翻译程序、汇编程序、编译程序、解释程序、遍。

【解答】

  • 源程序:符合某特定语言(称为源语言)的规则的程序文本,一般由高级语言或汇编语言书写,需要翻译成目标程序后才能被计算机执行;
  • 目标程序:符合某特定语言(称为目标语言)的规则的程序文本,一般由汇编语言或机器语言表示,由源程序翻译来以被计算机执行;
  • 翻译程序:将源程序等价转换(即翻译)为目标程序的程序;
  • 汇编程序:源语言为汇编语言、目标语言为机器语言的程序翻译;
  • 编译程序:源语言为高级语言的翻译程序;
  • 解释程序:直接对源语言进行解释执行的程序;
  • 遍:遍历源程序或中间代码,以产生新的中间代码或目标程序的一次过程。

【笔记】

  • 通常人们使用简洁的高级语言编写程序,并翻译为机器语言程序以执行,故翻译的源语言通常为高级语言。但也不总如此,在反编译时机器语言也作为了源语言。
  • 汇编语言与机器语言基本一一对应,翻译较为简单;高级语言抽象度高,翻译较为复杂。可能因此特别地创造了汇编程序与编译程序两词以示区别。

2 典型的编译程序可划分为哪几个主要的逻辑部分?各部分的主要功能是什么?

【解答】

  • 词法分析:识别程序中的单词(保留字、标识符、直接数与运算符等);
  • 语法分析:根据语法规则,分析各单词充当的语法成分(表达式、函数、语句),同时进行正确性检查;
  • 语义分析、中间代码生成:对各语法成分进行语义分析,从而生成中间代码(如四元式、三元式、逆波兰式等);
  • 代码优化:调整优化中间代码(在等价转换的原则下优化效率),从而生成更好的目标代码;
  • 目标程序生成:由中间代码生成目标程序,此过程中可进行一定优化(如充分利用累加器);
  • 符号表管理:管理源程序中的各种标识符等;
  • 出错处理:识别并定位源程序中的错误;

【笔记】

  • 编译的代码优化过程在两处出现:对中间代码的优化主要是针对程序逻辑的优化(如去掉无效的语句与循环);而生成目标程序时的优化主要是针对目标机器体系结构进行的。由此可知分开讨论的原因。

3 什么是编译的前端和后端?为什么要把编译程序分成前端和后端?

【解答】

  • 编译的前端指编译过程中依赖于源语言且相对独立于目标机器的部分,包括词法分析、语法分析、符号表建立、语义分析、中间代码生成、代码优化以及相关的错误处理。
  • 编译的后端指编译过程中依赖于目标机器的部分,一般与源语言无关而依赖中间语言。包括代码优化、代码生成以及相关的错误处理和符号表操作。
  • 如此可以对前端进行复用,为不同的机器仅改写后端是相对容易的。

【笔记】

  • 后端的复用正处于研究阶段:由于高级语言的差异较大,找到一种通用的中间语言来表示不同高级语言难度较大。

标签:中间代码,语言,练习,技术,目标程序,编译,源语言,源程序
From: https://www.cnblogs.com/xsp2021/p/16641480.html

相关文章

  • 对团队规范和技术的几点总结
    这两天团队要做项目总结,所以个人就浅薄的作了几点总结,当然,是从团队研发人员的角度去出发,因为团队的研发人员是基石,是铸造项目和产品的核心,产品的质量完全由研发人员来决定......
  • 如何从数据科学技术中获得最大价值?
    如何从数据科学技术中获得最大价值?PhotobyLukeChesseron不飞溅真正的数据科学问题具有其自身的特殊特征或特征,需要以自己的顺序或方式解决。将相同的技术应用于......
  • 编译信息里常见的英文单词
    目录编译信息里面常用的术语argument(实参)parameter(形参)alias(别名)binary(二进制的/二元的)declaration(声明)definition(定义)dereference(解引用)external(外部)pointer(指针)identifie......
  • 02.XML技术
    一、XML简介XML指可扩展标记语言(eXtensibleMarkupLanguage),是用来传输和存储数据的,是一种通用的数据交换格式,可以使数据在不同应用程序间交换,具有很强的可扩展性。 ......
  • 编译型和解释型
    编译型和解释型高级编程语言按照程序的执行方法分为编译型和解释型编译型相当于把一本书提前给你全部翻译好,后面再阅读的时候想看哪里直接就可以看了。如C,C++解释型......
  • CMake及交叉工具编译链的安装使用
    1.原理CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的mak......
  • PAN3028 是一款采用 ChirpIoTTM调制解调技术的低功耗远距离无线收发芯片
    PAN3028是一款采用ChirpIoTTM调制解调技术的低功耗远距离无线收发芯片,支持半双工无线通信,工作频段为370~600MHz和740~1200MHz,该芯片具有高抗干扰性、高灵敏度、低......
  • 居然还有一种叫做超分辨率的技术
    居然还有一种叫做超分辨率的技术arXiv:2208.12052 [pdf, ps, other]Super-resolutionwavefrontreconstructionSylvainOberti, CarlosCorreia, ThierryFusco, Be......
  • 技术分享 | 接口自动化测试如何进行认证?
    本文节选自霍格沃兹测试开发学社内部教材在HTTP中,基本认证是允许使用HTTP协议的用户在请求时,提供用户名和密码的一种方式。在进行基本认证的过程里,请求的HTTP头字......
  • webpack5 中使用iframe 复用导航栏时js代码多次编译问题
    作为webpack萌新,在使用webpack时,偶然发现热更新了多次,最开始以为是配置问题,网上找了很久都没有答案,无意看见一个一个帖子说多引用了一遍js文件,于是我我回去找代码看是不是......