项目简介
本项目是一个针对 C 编程语言子集的优化编译器,目标硬件为 ARMv7 - A 32 位。重点关注程序优化和机器码生成,使用 Clang 作为 C 语言前端,GCC ARM(Windows 交叉)工具链来汇编输出的汇编代码、进行链接并作为运行时标准库。此项目是谢菲尔德哈勒姆大学计算机科学学士学位的最后一年项目。
项目的主要特性和功能
- 编译器优化:采用多种优化技术对 C 语言子集代码进行优化。
- 多平台支持:完整编译目前仅支持 Windows,部分核心库可在 Linux 下编译以生成代码覆盖率信息。
- 模块化设计:包含核心编译器库、C 编译器前端、编译器驱动系统等多个模块,各模块职责明确。
- 测试工具:有测试运行工具,可进行功能/集成测试,支持内部 IR 测试和外部测试套件。
- 代码生成:将 C 语言代码转换为中间表示(IR),再转换为汇编代码,最终生成可执行的机器码。
安装使用步骤
外部依赖
- C++17 兼容的编译器,目前仅在 Visual Studio 2022(之前的 VS2019 也可能适用)下测试。
- CMake(仅测试了最新版本 3.22.1)。
- 预编译的 LibTooling(Clang)二进制文件,可运行
tools/BuildLLVM_Release.bat
(或tools/BuildLLVM_Debug.bat
取决于配置)来编译所有 clang/llvm 二进制文件并放置到lib/
文件夹的正确位置。
编译步骤
Visual Studio 2022
- 在项目根目录的终端中,确保
external/
中的所有子模块已复制(建议使用--depth=1
仅获取最新提交以节省时间和磁盘空间)。 - 运行
tools/BuildLLVM_Release.bat
(若要以调试模式编译则运行tools/BuildLLVM_Debug.bat
)来构建 LLVM。 - 生成项目文件到
vs2022/
文件夹:cmake -S. -Bvs2022 -G"Visual Studio 2022"
,如果使用发布模式的 LLVM 二进制文件,需在上述cmake
命令中添加-DCMAKE_BUILD_TYPE=Release
。 - 编译:
- 打开 Visual Studio,将
HelixCompiler
设置为启动项目并正常编译;或 - 使用
cmake --build vs2022 --target HelixCompiler
从命令行编译,若从命令行编译,需添加--configuration Release
以确保与 LLVM 的构建配置相同。
- 打开 Visual Studio,将
Linux
与 Windows 基本相同,但无需编译 LLVM/Clang。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】