C语言编译系统初探.ppt

C语言编译系统初探.ppt

ID:53000965

大小:70.00 KB

页数:15页

时间:2020-04-15

C语言编译系统初探.ppt_第1页
C语言编译系统初探.ppt_第2页
C语言编译系统初探.ppt_第3页
C语言编译系统初探.ppt_第4页
C语言编译系统初探.ppt_第5页
资源描述:

《C语言编译系统初探.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

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

3、生成进行将输入的单词归约为诸如声明、定义、语句、表达式等实体的尝试,并登记到各相关表中,如果归约失败还将记录出错信息。整个过程采用递归的方式进行逐级的分析。类型表记录由typedef所定义的类型。函数表直接记录目标代码。该编译程序不产生中间代码。常量表记录字符串、浮点常数等无法由x86立即数寻址方式引用的常量。类型表和变量表采用栈结构,这是为了方便表示非全局的类型和变量。引用信息记录了源程序所有引用过的源文件,这些信息将用于工程管理。简单数值类型类型位长取值范围char8-128~+127unsignedchar80~255short16-32768~+3276

4、7unsignedshort160~65535int32-2147483648~+2147483647unsignedint320~4294967295long64-9223372036854775808~+9223372036854775807unsignedlong640~18446744073709551615float321.401298464e-45~3.402823466e+38double644.940656458e-324~1.797693134e+308longdouble803.362103143e-4932~1.189731495e+493

5、2与标准C之间语法的差异函数调用前必须声明。函数、外部变量的声明不能省略基本类型标识。函数参数表如果为空则表示无任何参数。局部变量的定义无须全部写在语句体的开头部分。可以使用C++风格的单行注释。汇编程序&连接程序这两个部分不是我做的,我只是采用了Borland的TASM和TLINK来充当这两个角色。此外为了生成能够脱离Win32环境的程序,该系统最后还将为目标程序安装一个32位DPMI扩展器,使得程序即使部署在纯DOS环境下依然能够进入处理器保护模式并能访问全部4GB的地址空间。运行库及启动代码运行库包括了很多常用的C标准库函数,并全部由该编译系统编译生成。启

6、动代码由纯汇编语言编写,包含目标程序启动时所需的与运行环境相关的初始化代码及基础支持代码(如截获系统中断、高精度计时、64位长整数乘除运算支持等)。工程管理程序(MAKE)这个模块是由该编译系统实现的。它能够逐个检查工程内的每个模块的修改时间,对上次编译后又修改过的模块或新加入的模块进行编译、汇编,最后根据需要进行连接。整个过程都是自动完成的,这使得建造工程变得简单了许多,同时也为我后来的开发工作提供了很大的方便。集成开发环境(IDE)同样是由该编译系统实现,并利用了前面提到的工程管理程序。这是整个系统的主要界面,集成了系统几乎所有的功能。由于C语言不直接支持面

7、向对象的程序设计,因此我引用了WindowsAPI中的消息传递机制来模拟面向对象的机制。结束语这个“初探”的系统已经有一定的实用价值了。源程序附有我以前在TurboC2.0上写的一个图形演示程序,在这个系统上运行几乎未作什么修改。与TC的版本比较,在该系统上的版本能够并发更多的特效(主要得益于32位的代码并突破了实模式下640KB的内存限制),且由于对高精度计时的支持使得程序运行速率能够更加精确地控制。加上前面的MAKE程序和IDE,都使整个系统经受了一定的能力上和稳定性上的考验。然而,这个系统毕竟还只处于实验阶段,仍有许多不足之处,很多功能也还不完善。最大的遗

8、憾就是由于时间仓促没能完

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。