版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言编译系统初探一语言编译系统初探计算机系01本202X年2月概述该系统是一个简易的32位语言编译系统,可以实现语言程序从编辑修改、编译到连接、运行等一系列过程。能够工作在Windows的各个版本下。必须声明的是:在设计实现这个系统的时候我并未正式接触过编译原理,因此难免会有很多贻笑大方之处主要构成模块 编译程序 汇编程序 连接程序 运行库及启动代码 工程管理程序 集成开发环境系统流程源代码编译汇编代码汇编目标代码源代码编译汇编代码汇编目标代码源代码编译汇编代码汇编目标代码源代码编译汇编代码汇编目标代码运行库连接可执行文件编译程编译程序序汇编程汇编程序序连接程连接程序序编译程序编译器是系统的
2、核心部分,用纯面向对象的方法设计,是技术上最难实现的部分。由于本项目的目标只是做编译器的尝试且为了调试方便,因此并未使用低级语言而是采用来实现。编译器以普通的源代码文件为输入,以32位x86汇编语言代码文件为输出。该编译器实现了一些简单的优化。如常值表达式的化简等。目标代码输出词法分析解释预处理指令源程序编译流程类型/声明分析语句分析表达式分析函数体分析代码生成Token流类型表变量表函数表常量表错误表错误信息输出目标代码错误信息引用信息词法分析将源程序分解为按语言规定的保留字、标识符、数字、符号、字符串等,并处理预编译指令。代码生成进行将输入的单词归约为诸如声明、定义、语句、表达式等实体的尝
3、试,并登记到各相关表中,如果归约失败还将记录出错信息。整个过程采用递归的方式进行逐级的分析。类型表记录由typedef所定义的类型。函数表直接记录目标代码。该编译程序不产生中间代码。常量表记录字符串、浮点常数等无法由x86立即数寻址方式引用的常量。类型表和变量表采用栈结构,这是为了方便表示非全局的类型和变量。引用信息记录了源程序所有引用过的源文件,这些信息将用于工程管理。简单数值类型类型位长取值范围char8-128 +127unsigned char80 255short16-32768 +32767unsigned short160 65535int32-2147483648 +21474
4、83647unsigned int320 4294967295long64-9223372036854775808 +9223372036854775807unsigned long640 18446744073709551615float321.401298464e-45 3.402823466e+38double644.940656458e-324 1.797693134e+308long double803.362103143e-4932 1.189731495e+4932与标准之间语法的差异函数调用前必须声明。函数、外部变量的声明不能省略基本类型标识。函数参数表如果为空则表示无任何参数
5、。局部变量的定义无须全部写在语句体的开头部分。可以使用+风格的单行注释。汇编程序连接程序这两个部分不是我做的,我只是采用了Borland的TASM和TLINK来充当这两个角色。此外为了生成能够脱离Win32环境的程序,该系统最后还将为目标程序安装一个32位DPMI扩展器,使得程序即使部署在纯DOS环境下依然能够进入处理器保护模式并能访问全部4GB的地址空间。运行库及启动代码运行库包括了很多常用的标准库函数,并全部由该编译系统编译生成。启动代码由纯汇编语言编写,包含目标程序启动时所需的与运行环境相关的初始化代码及基础支持代码(如截获系统中断、高精度计时、64位长整数乘除运算支持等)。工程管理程序
6、(MAKE)这个模块是由该编译系统实现的。它能够逐个检查工程内的每个模块的修改时间,对上次编译后又修改过的模块或新加入的模块进行编译、汇编,最后根据需要进行连接。整个过程都是自动完成的,这使得建造工程变得简单了许多,同时也为我后来的开发工作提供了很大的方便。集成开发环境(IDE)同样是由该编译系统实现,并利用了前面提到的工程管理程序。这是整个系统的主要界面,集成了系统几乎所有的功能。由于语言不直接支持面向对象的程序设计,因此我引用了Windows API中的消息传递机制来模拟面向对象的机制。结束语这个“初探”的系统已经有一定的实用价值了。源程序附有我以前在上写的一个图形演示程序,在这个系统上运行几乎未作什么修改。与TC的版本比较,在该系统上的版本能够并发更多的特效(主要得益于32位的代码并突破了实模式下640KB的内存限制),且由于对高精度计时的支持使得程序运行速率能够更加精确地控制。加上前面的MAKE程序和IDE,都使整个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年专业劳务承揽合同范本版B版
- 商场2024年度陨石展示租赁合同3篇
- 2024年度移动互联网应用程序开发与运营合同
- 商业街2024年度扶持新商户发展合同3篇
- 2024年城市综合体建筑工程外脚手架分包合同书版B版
- 二零二四年度二手房交易市场调研合同3篇
- 2024年城市供水排水项目特许经营合同
- 2024年度版权许可使用合同书(音乐作品)2篇
- 2024专业版员工安全义务合作合同版B版
- 二零二四年度影视制作合同的影视作品描述与制作流程2篇
- 《胸腔穿刺术》课件
- 《民航安全检查(安检技能实操)》课件-第七章 人身检查
- 2024年世界职业院校技能大赛“食品安全与质量检测组”参考试题库(含答案)
- 《真希望你也喜欢自己》房琪-读书分享
- 投资学 第7版 课件 -第7章 证券融资
- 殡葬处置应急预案方案
- 时代的物联网技术与应用考核试卷
- 生管部年终总结
- 2024-2030年中国聚合支付行业创新模式及商业模式发展趋势报告
- 企业反恐维稳培训
- 临床提高脓毒性休克患者1h集束化措施落实率PDCA品管圈
评论
0/150
提交评论