一、赛题基本说明
第 1 条 :大赛要求各参赛队综合运用各种知识(包括但不局限于编译技术、操作系统、计算机体系结构等),构思并实现一个综合性的编译系统,以展示面向特定目标平台的编译器构造与编译优化的能力。
第 2 条 :大赛鼓励各参赛队充分了解目标语言及目标硬件平台(CPU指令集、Cache、各类并行加速能力等)特点,使编译出的目标码能够尽可能利用目标硬件平台能力以提高目标码的运行效率。
第 3 条 :为展示参赛队的设计水平,增加竞赛的对抗性,进入决赛的参赛队还需针 对目标语言或目标平台的变化,现场调整编译系统。
第 4 条 :除本技术方案特别要求、规定和禁止事项外,各参赛队可自行决定编译器体系结构、前端与后端设计、代码优化等细节。 除本技术方案特别要求、规定和禁止事项外.
二、初赛评分标准
比赛内容:
开发支持特定语言、面向 RISC-V 硬件平台的 综合性编译系统。
- 编译器应当基于 MoonBit 语言(某固定版本)开发,并能够在 x86_64 架构、Ubuntu 24.04LTS 操作系统的评测服务器上编译运行。编译器本身应当可以使用 MoonBit 的 WASM-GC 后端编译运行。
- RISC-V硬件平台:能够将符合自定义程序设计语言 MiniMoonBit 2025 的测试程序编译为 LLVM IR 或 RISC-V 汇编语言程序。如果输出汇编,程序应当使用 RV64GC 指令集,并将在链接后在 Linux 操作系统的 RISC-V 设备上运行。如果输出 LLVM IR,应当输出 LLVM 19 可以接受的 riscv64-unknown-linux-gnu 目标平台的程序。
功能测试:
参赛队所开发的编译器应能够编译大赛提供的 MiniMoonBit 2025 语言编写的基准测试程序。
- 具有词法分析、语法分析、语义分析、目标代码生成与优化等能力, 并支持编译错误的准确识别、定位与错误处理功能。
- 对于正确编译通过的 MiniMoonBit 2025 基准测试程序,应生成符合要求的 LLVM IR 或者汇编文件。 功能测试要求基于大赛给出的代码解析器(parser)、汇编器(assembler)、链接器(linker)等工具,基于大赛给出的命令行接口要求,用自行编写的实现为每个基准测试程序生成对应的输出。对于输出可执行文件的测试,输出将在安装有 Linux 操作系统的指定硬件平台上加载并运行。对于每个测试用例,我们将给定输入数据,比对程序运行输出结果是否满足预期,以此决定该测试是否通过。对于量化评分部分,每个测试用例的基准分数为 总分数/总测试数量。
不同的编译器实现级别与对应的分数如下:
比赛中各得分内容的介绍与评测方式如下:
-
必选功能考察编译器完整编译一个程序的步骤。对于每个步骤,测试要求参赛者的编译器正确接受给定的输入,或者通过编译失败提示输入有误。参赛编译器的行为与预期相符则可以获得对应测试的分数。*注意:对于代码生成步骤,本次竞赛接收两种形式的代码,一种是符合llvm-19.0标准的LLVM IR,输出文件名后缀为.ll;另一种是符合RISCV64GC标准的汇编代码。输出文件名后缀为
.s
。当文件名后缀为.ll