forked from NUDT-compiler/nudt-compiler-cpp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.0 KiB
2.0 KiB
测试结果总结
功能测试 (Functional Tests): 10/11 通过 (90.9%)
✓ 通过的测试 (10个):
-
05_arr_defn4 - 数组定义和初始化
-
09_func_defn - 函数定义
-
11_add2 - 加法运算
-
13_sub2 - 减法运算
-
15_graph_coloring - 图着色算法 (使用2D数组和指针参数)
-
22_matrix_multiply - 矩阵乘法 (2D数组)
-
25_scope3 - 作用域测试
-
29_break - break语句
-
36_op_priority2 - 运算符优先级
-
simple_add - 简单加法
✗ 失败的测试 (1个):
- 95_float - 需要浮点数常量支持 (当前仅支持int)
性能测试 (Performance Tests): 8/10 编译成功 (80%)
✓ 编译成功 (8个):
- 01_mm2 - 矩阵乘法 (已验证输出正确: 1691748973)
- 02_mv3 - 矩阵向量乘法
- 03_sort1 - 排序算法
- 2025-MYO-20 - 综合测试
- fft0 - 快速傅里叶变换
- gameoflife-oscillator - 生命游戏
- if-combine3 - 条件分支优化
- transpose0 - 矩阵转置
✗ 编译失败 (2个):
- large_loop_array_2 - 需要float返回类型支持
- vector_mul3 - 需要float变量支持
总体成绩
- 总计: 18/21 测试通过/编译成功 (85.7%)
- 整数支持: 完整 (所有整数相关测试100%通过)
- 浮点支持: 未实现 (3个浮点测试全部失败)
已实现功能
✓ 基本运算 (加减乘除、取模、比较、逻辑运算) ✓ 控制流 (if/else, while, break, continue) ✓ 函数调用 (参数传递、返回值) ✓ 数组支持 (1D/2D数组、全局/局部数组) ✓ 指针参数传递 (函数接收数组指针) ✓ GEP指令 (数组元素地址计算) ✓ AArch64代码生成 (完整的汇编输出)
未实现功能
✗ 浮点数类型 (float/double) ✗ 浮点运算 ✗ 浮点常量
关键修复
- GEP指令实现 - 支持全局数组、局部数组、指针参数的元素访问
- 指针参数传递 - 区分数组地址传递和指针值加载
- 2D数组支持 - 完整的多维数组线性化和访问
- 栈帧管理 - 正确的栈偏移计算和指针存储