littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于C语言的编译器及测试项目

项目简介

本项目是一个受gcc启发而开发的C编译器及配套测试项目。编译器当前可生成X86汇编代码,未来计划支持ARM汇编。测试项目包含多个测试用例,能对编译器功能进行全面验证,测试范围覆盖C语言基础语法、控制流、函数调用、变量作用域等方面。

项目的主要特性和功能

编译器特性

  • 可扩展性强,采用中间表示,便于扩展支持更多架构。
  • 支持多种C语言特性,能编译具备多变量声明、常量与变量赋值、if - else块、算术表达式求值、比较运算符、一元运算符、括号表达式、作用域、while循环、任意块返回、任意位置变量声明、标准函数以及最多6个参数的函数定义与调用等功能的基础程序。
  • 具备警告与验证功能,会在变量声明但未使用时显示警告,确保所有使用的变量都已声明。

测试项目特性

  • 测试覆盖全面,多个测试用例覆盖C语言基本语法结构,能全面测试编译器功能。
  • 用例独立,每个测试用例为独立C语言程序,方便调试和修改。
  • 结果可比较,通过比较实际输出和预期输出,判断编译器语法和功能实现是否正确。
  • 易于扩展,项目结构清晰,便于添加新测试用例。
  • 适合教学研究,帮助学习者理解C语言编译器工作原理及研究实现和优化。

安装使用步骤

编译器

  1. 复制项目。
  2. 编译项目:进入编译器目录 cd C - Compiler/compiler,根据不同系统执行相应脚本:
    • Apple Silicon:./runmake_M1.sh
    • Ubuntu:./runmake_ubuntu.sh
    • Fedora:./runmake_fedora.sh
  3. 使用编译器:在“compiler”目录下,使用 ./ifcc <path to your program> 可直接在控制台显示汇编代码;若要将输出保存到文件,可使用 ./ifcc <path to your program> > executable
  4. 运行测试:
    • Apple Silicon用户需确保有rosetta2并在X86模式下运行终端,或使用 arch -x86_64 zsh 打开X86架构终端。
    • 进入 tests 目录,执行 ./ifcc - test.py testfiles

测试项目

  1. 复制项目:使用git命令复制项目到本地。
  2. 编译测试:在命令行中进入项目目录,运行 make 命令编译所有测试用例。
  3. 运行测试:运行 make test 命令执行所有测试用例,并检查输出结果。
  4. 分析结果:根据测试结果分析编译器的功能是否正确实现。
  5. 修改和扩展:根据需要修改或扩展测试用例,以测试编译器对新的语法特性或特定错误的处理。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】