项目简介
本项目是一个受gcc启发而开发的C编译器及配套测试项目。编译器当前可生成X86汇编代码,未来计划支持ARM汇编。测试项目包含多个测试用例,能对编译器功能进行全面验证,测试范围覆盖C语言基础语法、控制流、函数调用、变量作用域等方面。
项目的主要特性和功能
编译器特性
- 可扩展性强,采用中间表示,便于扩展支持更多架构。
- 支持多种C语言特性,能编译具备多变量声明、常量与变量赋值、if - else块、算术表达式求值、比较运算符、一元运算符、括号表达式、作用域、while循环、任意块返回、任意位置变量声明、标准函数以及最多6个参数的函数定义与调用等功能的基础程序。
- 具备警告与验证功能,会在变量声明但未使用时显示警告,确保所有使用的变量都已声明。
测试项目特性
- 测试覆盖全面,多个测试用例覆盖C语言基本语法结构,能全面测试编译器功能。
- 用例独立,每个测试用例为独立C语言程序,方便调试和修改。
- 结果可比较,通过比较实际输出和预期输出,判断编译器语法和功能实现是否正确。
- 易于扩展,项目结构清晰,便于添加新测试用例。
- 适合教学研究,帮助学习者理解C语言编译器工作原理及研究实现和优化。
安装使用步骤
编译器
- 复制项目。
- 编译项目:进入编译器目录
cd C - Compiler/compiler
,根据不同系统执行相应脚本:- Apple Silicon:
./runmake_M1.sh
- Ubuntu:
./runmake_ubuntu.sh
- Fedora:
./runmake_fedora.sh
- Apple Silicon:
- 使用编译器:在“compiler”目录下,使用
./ifcc <path to your program>
可直接在控制台显示汇编代码;若要将输出保存到文件,可使用./ifcc <path to your program> > executable
。 - 运行测试:
- Apple Silicon用户需确保有rosetta2并在X86模式下运行终端,或使用
arch -x86_64 zsh
打开X86架构终端。 - 进入
tests
目录,执行./ifcc - test.py testfiles
。
- Apple Silicon用户需确保有rosetta2并在X86模式下运行终端,或使用
测试项目
- 复制项目:使用git命令复制项目到本地。
- 编译测试:在命令行中进入项目目录,运行
make
命令编译所有测试用例。 - 运行测试:运行
make test
命令执行所有测试用例,并检查输出结果。 - 分析结果:根据测试结果分析编译器的功能是否正确实现。
- 修改和扩展:根据需要修改或扩展测试用例,以测试编译器对新的语法特性或特定错误的处理。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】