编译原理(九)C语言编译系统

C语言编译系统:


两边扫描,有些跳转代码,要等翻译过后,才能知道具体位置,所以要进行第二遍编译:

连接器

目标模块或目标文件的形式

  • 可重定位的目标文件
  • 可执行的目标文件
  • 共享目标文件
  • ----一种特殊的可重定位目标文件
  • ----在装入程序或运行程序时,动态地装入到内存并连接(例如,当你引入了包含printf的头文件,当用到printf的时候,会将此文件装入内存,否则不装入,如此做到动态装入)

连接是一个收集、组织程序所需的不同代码和数据的过程,以便程序能被装入内存并被执行

连接的时机:编译时(静态连接器)、装入时(动态连接器)、或运行时。

若需要了解装入过程真正怎样工作的,必须在理解了进程、虚拟内存和内存分页等概念以后。



华中科技大学 编译原理 面向过程的C语言编译器设计 功能包括:词法分析和语法分析、语义分析、中间代码生成的 源码 题目:c--语言编译器设计与实现(请为自己的编译器命名) 源语言定义:或采用教材中Decaf语言,或采用C语言(或C++语言或C#语言或JAVA语言)部分关键语法规则。源语言要求至少包含的语言成分如下: 数据类型至少包括char类型、int类型和float类型 基本运算至少包括算术运算、比较运算、自增自减运算和复合赋值运算 控制语句至少包括if语句和while语句 实验内容:完整可运行的自定义语言编译器 实验一:词法语法分析器的设计与实现:建议使用词法语法生成工具如:LEX/FLEX ,YACC/BISON等专业工具完成。 实验二:符号表的设计与属性计算:设计符号表数据结构和关键管理功能。动态展现符号表变化过程。无论语法分析使用工具还是自己设计,都必须对符号表进行设计和管理,属性计算可以语义子程序实现。 实验三:语义分析和中间代码生成:生成抽象语法树,进行语义分析,实现类型检查和控制语句目标地址计算,生成中间代码。中间代码的形式可以采用不同形式,但实验中要求定义自己的中间形式。 实验四:目标代码生成:在前三个实验的基础上实现目标代码生成。也可以使用工具如LLVM来生成目标代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值