



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理Turbo C编译器的认识学院:数学与信息科学学院班级:08级计算机师范一班学号:200871030125姓名:全瑞英Turbo C 编译器的认识Turbo C是由美国Borland公司研制生产的,它是目前在微机上广泛使用的编译程序。Turbo C集程序编辑、编译、连接、调试为一体具有速度快、效率高、功能强等优点。Turbo C是基于DOS平台的C编译系统,占用系统资源少,提供的界面直观、易用。程序的编译、连接、调试、运行、环境设置等工作都在同一界面上进行,从而用户使用非常方便。简单讲,编译器就是将高级语言翻译为机器语言(低级语言)的程序。高级计算机语言便于人编写,阅读,维护。低阶机器语言是计算机能直接解读、运行的。编译器将源程序作为输入,翻译产生使用目标语言的等价程序。源代码一般为高级语言,如Pascal、C、C+、C# 、Java等,而目标语言则是汇编语言或目标机器的目标代码,有时也称作机器代码。一个现代编译器的主要工作流程如下:源代码 (source code) 预处理器 (preprocessor) 编译器 (compiler) 汇编程序 (assembler) 目标代码 (object code) 链接器 (Linker) 可执行程序 (executables)。工作原理:编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。 预处理器:作用是通过代入预定义等程序段将源程序补充完整。 编译器前端:前端主要负责解析输入的源代码,由语法分析器和语意分析器协同工作。语法分析器负责把源代码中的单词找出来,语意分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。例如“a = b + c;”前端语法分析器看到的是“a, =, b , +, c;”,语意分析器按定义的语法,先把他们组装成表达式b + c,再组装成a = b + c的语句。 前端还负责语义的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树,这样后端可以在此基础上进一步优化,处理。 编译器后端:编译器后端主要负责分析,优化中间代码以及生成机器代码。一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内还是函数之间进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。 编译器分析:编译器分析的对象是前端生成并传递过来的中间代码,优化型编译器常常用好几种层次的中间代码来表示程序,高层的中间代码,接近输入的源代码的格式,与输入语言相关,包含更多的全局性的信息,和源代码的结构;中层的中间代码与输入语言无关,低层的中间代码与机器语言类似。不同的分析,优化发生在最适合的那一层中间代码上。常见的编译分析有函数调用树,控制流程图,以及在此基础上的 变量定义使用,使用定义链,变量别名分析,指针分析,数据依赖分析等等。上述的程序分析结果是编译器优化和程序变形的前提条件。常见的优化和变新有:函数内嵌,无用代码删除,标准化循环结构,循环体展开,循环体合并,分裂,数组填充等等。 优化和变形的目标是减少代码的长度,提高内存,缓存的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码变成并行运算,多线程的代码。机器代码的生成是优化变型后的中间代码转换成机器指令的过程。编译器主要采用生成汇编代码的策略,而不直接生成二进制的目标代码。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何选择合适的机器指令,如何合并几句代码成一句等等。 工作方法:首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候需要把多个文件产生的目标文件进行链接,产生最后的代码。这一过程称为交叉链接。 编译器,包括了代码编译器(compiler),目标文件链接器(linker),库文件管理工具,编译驱动工具,ANSI c/c+标准的头文件和库文件,扩展的头文件和库文件,集成开发环境等等与编译相关的工具,所有这些工具的集合,就组成了广义上的编译器。linker的功能是将目标文件进行装配,将浮动的地址变为确定的地址,这个工作是通过修改目标文件的重定位项来实现的。link这一阶段处理的输入是目标文件,其输出是可执行文件,或动态库。任何一个编译器都会提供库文件和与之对应的头文件,C/C+编译器一般都提供ANSI C/C+的库和相应的头文件。广义的编译过程,实际上是由编译和链接两个基本步骤组成的。在编译器里,有一些默认的规定,我们需要了解。在编译器中,bin目录用于存放compiler、linker等工具,include目录用于存放头文件,lib目录用存放库文件,大多数的编译器的目录就是按这个来组织的。接下来看Turbo C为我们提供了些什么。bin目录中:CPP.EXE C语言预处理工具,就是负责对源代码进行预编译处理; TCC.EXE C语言的编译器,可以将代码编译为目标文件,并且能自动调用tlink链接生成可执行文件;TASM.exe是一个汇编工具,可以将x86的汇编代码编译成为目标文件;TLink.exe是一个链接器,负责对目标文件、库文件等进行链接;TLib.exe是一个库文件管理工具,可以将多个目标文件打包到一个库文件里;BGIOBJ.exe 可以将BGI文件转换为.obj文件;TURBOC.CFG tcc默认的编译参数配置文件。BGI目录中:EGAVGA.BGI 是EGAVGA的bgi驱动FONT目录中:存放了BGI所使用到的各种字体文件INCLUDE目录中:是Turbo C的库函数的所有的头文件,当要使用某个库函数时可以在这个目录下搜索,找到其所在文件和原型。Lib目录: init.obj文件是C语言的启动代码,它负责建立C程序运行的堆栈、初始化内存、调用C入口函数等。这部分代码是使用汇编书写的,其源代码可以在TC里找到,名称为Init.ASM。c0t.obj、c0s.obj、c0m.obj、c0c.obj、c0l.obj和c0h.obj文件,都是c code的入口函数实现,入口函数将会读取环境变量,并调用c语言中的main函数,将命令行参数传入main函数中,之后的控制权就交给了main函数,也就是我们常说的C的主函数main。由于Turbo C中有不同的内存模式,因此以上6个文件分别对应TC中6种不同的内存模式。cc.lib、ch.lib、cl.lib、cm.l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025辽宁盘锦建设投资有限责任公司招聘工作人员和考前自测高频考点模拟试题及答案详解(各地真题)
- 2025年海西州行政执法机构面向社会公开招聘工作人员模拟试卷附答案详解(考试直接用)
- 2025辽宁沈阳盛京资产管理集团有限公司所属子公司沈阳智领科技服务有限公司招聘2人考前自测高频考点模拟试题及答案详解1套
- 2025年临沂沂南县教育系统部分事业单位公开招聘教师(5名)考前自测高频考点模拟试题及答案详解一套
- 2025昆明市官渡区北京八十学校招聘(18人)考前自测高频考点模拟试题及答案详解(网校专用)
- 2025广西政协报社招聘高层次人才1人考前自测高频考点模拟试题含答案详解
- 2025年福建南平武夷有轨电车有限公司招聘1人模拟试卷及完整答案详解一套
- 2025年贵州三支一扶必刷题及答案
- 2025黑龙江鸡西市人社局招聘公益性岗位就业人员3人(保安)考前自测高频考点模拟试题及答案详解(夺冠)
- 2025年春季中国邮政储蓄银行内蒙古分行校园招聘模拟试卷及一套答案详解
- 新概念英语青少版入门 A-Unit-1课件(共98张)
- 儿童肺炎支原体肺炎诊疗指南(2023年版)解读
- 个人履职考核情况表
- 中小学消防安全、交通安全、食品安全、防溺水、防欺凌系统安全教育主题课件
- 建筑垃圾减量化专项方案
- 关于农民工工资催付告知函
- 实验室搅拌器实验室搅拌器安全操作及保养规程
- GB/T 6426-1999铁电陶瓷材料电滞回线的准静态测试方法
- 广西版建筑装饰装修工程消耗量定额说明及计算规则
- 髋关节解剖资料课件
- 高二物理课件:竞赛薄膜干涉
评论
0/150
提交评论