Skip to content

topic14-docs - #35

Open
yuki-328 wants to merge 2 commits into
ScratchV-Compiler:mainfrom
yuki-328:feature/const_merge
Open

topic14-docs#35
yuki-328 wants to merge 2 commits into
ScratchV-Compiler:mainfrom
yuki-328:feature/const_merge

Conversation

@yuki-328

Copy link
Copy Markdown

No description provided.

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown

🤖 AI Code Review

共审查 2 个变更文件

📁 docs/课题14-常量加载合并优化-开发文档初稿.md

🔴 引用缺失 — 关联 Issue 标记为 #待补充,应补全具体 issue 号,否则无法追踪。

🟡 API 设计模糊merge_constants_detailed 返回的 stats 结构未定义,导致实现不一致。建议明确 ConstantMergeStats 字段。

🟡 CLI 参数别名决策缺失 — 旧名 --merge-constants 是否保留需评审决定,文档应给出结论而非仅提及。

🟡 “定义寄存器”语义不明确 — 第5步中“遇到定义寄存器的指令使对应状态失效”,需明确仅写目标寄存器的指令(如 addi rd, rs1, imm 仅定义 rd),避免误清空只读寄存器。

🟡 调度器顺序风险未充分论证 — 仅说“const-merge 固定在 scheduler 前”,但未解释调度器是否可能破坏已合并的 pattern。建议增加约束或说明调度器设计不影响该顺序。

💭 li 伪指令表述不准确 — 验收标准第19项“li 是伪指令”应改为“伪指令或汇编器宏”,因为 li 在某些汇编器中是内部宏。

💭 参考资料链接应使用 permalink — 第4个链接指向 main 分支,可能随 commit 变化。建议使用 109a6a2 的永久链接或明确版本。


📁 docs/课题14-常量加载合并优化-技术设计文档初稿.md

🔴 规则A对第二条指令带标签处理不明确 — 第6.3节条件5“不能带可作为跳转目标的标签”过于保守,且未覆盖第二条指令本身有标签(如 L1: addi)的情况。合并后标签可保留在 li 上,语义不变,应允许合并并明确标签保留规则。

🟡 设计文档包含具体 commit hash — 第3.3节第7点引用 commit 109a6a2,应替换为“当前主分支代码”或删除,避免版本过时。

🟡 规则B中未知指令处理未明确寄存器粒度 — 第6.4节“保守清空状态或至少不进行跨越式删除”建议改为“清空该未知指令可能定义的寄存器的跟踪状态,或清空全部状态”,避免模糊不清。

🟡 测试分类缺少统计一致性验证 — 第9.1节属性测试应包含“转换总数与分类统计的和一致”的测试用例,确保 total_changes == merged_pairs + redundant_lui_removed

🟡 output_equal 定义不清晰 — 第10.4节应明确:比较同一输入下模拟器或 Spike 执行后的最终寄存器/返回值,而非仅文本或汇编结果。

💭 术语统一建议 — 第1.2节“冗余真实指令消除”可改为“冗余 lui 消除”,避免“真实指令”歧义。建议全文统一使用小写 lui/addi/li 并保持冒号后空格一致。


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant