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

【源码】基于 C++ 的 C 语言子集优化编译器

项目简介

本项目是一个针对 C 编程语言子集的优化编译器,目标硬件为 ARMv7 - A 32 位。重点关注程序优化和机器码生成,使用 Clang 作为 C 语言前端,GCC ARM(Windows 交叉)工具链来汇编输出的汇编代码、进行链接并作为运行时标准库。此项目是谢菲尔德哈勒姆大学计算机科学学士学位的最后一年项目。

项目的主要特性和功能

  1. 编译器优化:采用多种优化技术对 C 语言子集代码进行优化。
  2. 多平台支持:完整编译目前仅支持 Windows,部分核心库可在 Linux 下编译以生成代码覆盖率信息。
  3. 模块化设计:包含核心编译器库、C 编译器前端、编译器驱动系统等多个模块,各模块职责明确。
  4. 测试工具:有测试运行工具,可进行功能/集成测试,支持内部 IR 测试和外部测试套件。
  5. 代码生成:将 C 语言代码转换为中间表示(IR),再转换为汇编代码,最终生成可执行的机器码。

安装使用步骤

外部依赖

  1. C++17 兼容的编译器,目前仅在 Visual Studio 2022(之前的 VS2019 也可能适用)下测试。
  2. CMake(仅测试了最新版本 3.22.1)。
  3. 预编译的 LibTooling(Clang)二进制文件,可运行 tools/BuildLLVM_Release.bat(或 tools/BuildLLVM_Debug.bat 取决于配置)来编译所有 clang/llvm 二进制文件并放置到 lib/ 文件夹的正确位置。

编译步骤

Visual Studio 2022

  1. 在项目根目录的终端中,确保 external/ 中的所有子模块已复制(建议使用 --depth=1 仅获取最新提交以节省时间和磁盘空间)。
  2. 运行 tools/BuildLLVM_Release.bat(若要以调试模式编译则运行 tools/BuildLLVM_Debug.bat)来构建 LLVM。
  3. 生成项目文件到 vs2022/ 文件夹:cmake -S. -Bvs2022 -G"Visual Studio 2022",如果使用发布模式的 LLVM 二进制文件,需在上述 cmake 命令中添加 -DCMAKE_BUILD_TYPE=Release
  4. 编译:
    • 打开 Visual Studio,将 HelixCompiler 设置为启动项目并正常编译;或
    • 使用 cmake --build vs2022 --target HelixCompiler 从命令行编译,若从命令行编译,需添加 --configuration Release 以确保与 LLVM 的构建配置相同。

Linux

与 Windows 基本相同,但无需编译 LLVM/Clang。

下载地址

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