C语言编译系统初探.ppt_第1页
C语言编译系统初探.ppt_第2页
C语言编译系统初探.ppt_第3页
C语言编译系统初探.ppt_第4页
C语言编译系统初探.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、语言编译系统初探,计算机系01本 陈海东 2004年2月,概述,该系统是一个简易的32位语言编译系统,可以实现语言程序从编辑修改、编译到连接、运行等一系列过程。能够工作在Windows的各个版本下。 必须声明的是:在设计实现这个系统的时候我并未正式接触过编译原理,因此难免会有很多贻笑大方之处,主要构成模块,编译程序 汇编程序 连接程序 运行库及启动代码 工程管理程序 集成开发环境,系统流程,源代码,编译,汇编代码,汇编,目标代码,源代码,编译,汇编代码,汇编,目标代码,源代码,编译,汇编代码,汇编,目标代码,源代码,编译,汇编代码,汇编,目标代码,运行库,连接,可执行文件,编译程序,汇编程序,

2、连接程序,编译程序,编译器是系统的核心部分,用纯面向对象的方法设计,是技术上最难实现的部分。由于本项目的目标只是做编译器的尝试且为了调试方便,因此并未使用低级语言而是采用Visual C+ 6.0来实现。 编译器以普通的源代码文件为输入,以32位x86汇编语言代码文件为输出。 该编译器实现了一些简单的优化。如常值表达式的化简等。,目标代码输出,词法分析 解释预 处理指令,源程序,编译流程,类型/声明分析,语句分析,表达式分析,函数体分析,代码生成,Token流,类型表,变量表,函数表,常量表,错误表,错误信息输出,目标代码,错误信息,引用信息,词法分析将源程序分解为按语言规定的保留字、标识符、

3、数字、符号、字符串等,并处理预编译指令。 代码生成进行将输入的单词归约为诸如声明、定义、语句、表达式等实体的尝试,并登记到各相关表中,如果归约失败还将记录出错信息。整个过程采用递归的方式进行逐级的分析。 类型表记录由typedef所定义的类型。 函数表直接记录目标代码。该编译程序不产生中间代码。 常量表记录字符串、浮点常数等无法由x86立即数寻址方式引用的常量。 类型表和变量表采用栈结构,这是为了方便表示非全局的类型和变量。 引用信息记录了源程序所有引用过的源文件,这些信息将用于工程管理。,简单数值类型,与标准之间语法的差异,函数调用前必须声明。 函数、外部变量的声明不能省略基本类型标识。 函

4、数参数表如果为空则表示无任何参数。 局部变量的定义无须全部写在语句体的开头部分。 可以使用+风格的单行注释。,汇编程序连接程序,这两个部分不是我做的,我只是采用了Borland的TASM和TLINK来充当这两个角色。 此外为了生成能够脱离Win32环境的程序,该系统最后还将为目标程序安装一个32位DPMI扩展器,使得程序即使部署在纯DOS环境下依然能够进入处理器保护模式并能访问全部4GB的地址空间。,运行库及启动代码,运行库包括了很多常用的标准库函数,并全部由该编译系统编译生成。 启动代码由纯汇编语言编写,包含目标程序启动时所需的与运行环境相关的初始化代码及基础支持代码(如截获系统中断、高精度

5、计时、64位长整数乘除运算支持等)。,工程管理程序(MAKE),这个模块是由该编译系统实现的。它能够逐个检查工程内的每个模块的修改时间,对上次编译后又修改过的模块或新加入的模块进行编译、汇编,最后根据需要进行连接。整个过程都是自动完成的,这使得建造工程变得简单了许多,同时也为我后来的开发工作提供了很大的方便。,集成开发环境(IDE),同样是由该编译系统实现,并利用了前面提到的工程管理程序。这是整个系统的主要界面,集成了系统几乎所有的功能。由于语言不直接支持面向对象的程序设计,因此我引用了Windows API中的消息传递机制来模拟面向对象的机制。,结束语,这个“初探”的系统已经有一定的实用价值了。源程序附有我以前在Turbo C 2.0上写的一个图形演示程序,在这个系统上运行几乎未作什么修改。与TC的版本比较,在该系统上的版本能够并发更多的特效(主要得益于32位的代码并突破了实模式下640KB的内存限制),且由于对高精度计时的支持使得程序运行速率能够更加精确地控制。加上前面的MAKE程序和IDE,都使整个系统经受了一定的能力上和稳定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论