01第1章-编译概述 --.pptVIP

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
01第1章-编译概述 --

1.4.3编译程序分遍的优缺点 优点: 少占内存。 各遍编译程序相互独立,结构清晰; 能够进行充分的优化,产生高质量的目标程序; 可将编译程序分为“前端”和“后端”,有利于编译程序的移植。 缺点:多耗时间。 * 1.4.4“端”的概念 根据编译程序的各部分涉及的内容,可将编译的组成部分划分成“前端”和“后端”。 前端与源语言有关,包括词法分析、语法分析、语义分析和中间代码生成、符号表的建立以及相应的错误处理和符号表操作。 后端主要与目标机器有关,包括代码优化、目标代码生成以及相应的错误处理和符号表操作。 把编译程序分为前端和后端的优点是便于移植、编译程序的构造。 * 1.5 编译程序的前后处理器 源程序将多个模块保存在不同的文件中。 有些语言为了提高编程效率还提供了一些“预处理命令” 。 编译预处理器将各种源文件连接起来,将宏扩展成源语言语句。图1-9显示一个语言从框架源程序到可运行程序,处理系统的各个部分。 预处理器 编译程序 汇编程序 连接、加载程序 框架源程序 源程序 目标汇编程序 可重定位的机器代码 绝对机器代码 库、可重定位目标文件 图1-9 * 1.5.1预处理器 预处理器对源程序进行处理,产生标准源程序。 不同语言的预处理功能有所不同,C语言编译系统的预处理器主要完成以下几个功能: 宏处理:如#define PI 3.1415926,在编译之前,预处理器要将源程序中的所有符号PI换成3.1415926。 文件包含:如C源程序中含有#include “stdio.h”,预处理器用stdio.h的实际内容替换该语句。 条件编译:并非源程序的每一行都要进行编译,有时情况不同要编译不同的语句。C语言预处理器处理条件编译,将真正要编译的语句组成标准源程序。 * 1.5.2 汇编程序 有些编译程序直接产生可重定位的机器语言目标代码,而有些编译程序只产生汇编语言目标代码,这样就需要汇编程序做进一步翻译,生成可重定位的机器代码。 可重定位的机器代码可装载到内存的任何地方,这种代码采用相对地址,起始地址为0,各条指令及所访问的地址都是相对应于0的逻辑地址。 汇编语言采用助记符表示操作码,用标识符表示存储地址,如完成a = b + 5的80x86汇编语言程序如下: MOV R1,b ADD R1,#5 MOV a,R1 * 1.5.3 连接装入程序 连接装入程序完成两个主要任务: 连接:把几个可重定位的机器代码文件连接成一个可执行的程序,这些文件可能是分别编译得到的,也可能是由系统提供的库文件。 装入:读入可重定位的机器代码,根据装入地址修改将重定位地址转换成物理地址,并存储到内存中。 * 1.6 TEST语言与编译器 TEST语言的程序结构简单,语法上相当于C的函数体:是由一对花括号括起来的语句序列。 既无过程也无函数。 表达式语句以及控制语句的写法与C语言类似。 一条声明语句只能声明一个整型简单变量变量、没有数组。 控制语句只有三个: if、while和for语句,这三个控制语句本身可包含语句序列 表达式也局限于布尔表达式和整型算术表达式。布尔表达式由对两个算术表达式的比较组成,比较使用、=、、=、= =和!=比较算符。 算术表达式包括整型常数、变量、参数以及4个算符+、-、*、/,。 有复合语句。 为了能实现输入输出,添加了read语句和write语句。 在花括号中可以有注释,注释用“/*”和“*/”括起来,但注释不能嵌套。 * 1.6.2 TEST编译器 TEST编译器包括以下的C文件, TESTmain.c: 主程序,先后调用词法分析、语法分析及语义分析和代码生成。 TESTscan.c: 词法分析,接收用TEST语言编写的程序,输出的单词符号程序将作为语法分析的输入。 TESTparse.c:语法、语义分析及TEST机的汇编代码生成,如果有错误,报告错误。 * 第一章 编译概述 * 内容提要 程序设计语言 翻译程序 编译程序的组成 编译程序的结构 编译程序的前后处理器 TEST语言与编译器 * 1.1 程序设计语言 机器语言 汇编语言 高级语言 机器语言和汇编语言称为低级语言 * 1.1 程序设计语言 机器语言:直接用计算机能够识别的二进制代码指令来编写程序的语言。由二进制的指令代码组成。 1 + 3 表示为 00000001是最底层的计算机语言,不需要翻译就可以直接被计算机硬件识别。对应不同的计算机硬件有不同的机器语言。 特点:执行速度快,但编写程序的难度大,修改、调试不方便,直观性差,不易移植。 程序设计语言 汇编语言:又称为符号语言。与机器语言一一对应,采用能帮助记忆的英文缩写符号(指令助记符)来代

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档