合并
This commit is contained in:
91
.codex/skills/git-submit/SKILL.md
Normal file
91
.codex/skills/git-submit/SKILL.md
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
name: git-submit
|
||||||
|
description: 执行 Git 提交和推送工作流
|
||||||
|
---
|
||||||
|
|
||||||
|
# Git 提交/推送工作流(Codex CLI)
|
||||||
|
|
||||||
|
当用户明确要求提交/推送时使用。
|
||||||
|
|
||||||
|
## 操作流程
|
||||||
|
|
||||||
|
### 1)检查当前状态(不需要用户确认)
|
||||||
|
|
||||||
|
- 查看分支/干净程度:`git status -sb`
|
||||||
|
- 查看变更概要:`git diff --stat`
|
||||||
|
|
||||||
|
如发现明显问题,优先在提交前处理:
|
||||||
|
|
||||||
|
- 误把生成物/大文件加入:先移除或补 `.gitignore`
|
||||||
|
- 变更跨度过大:提醒用户是否需要拆分提交
|
||||||
|
|
||||||
|
### 2)起草提交信息(中文;这是唯一一次需要用户确认的环节)
|
||||||
|
|
||||||
|
根据对话历史和修改的文件信息,按下方规范先给出“建议的提交信息”,然后询问用户:**“是否确认/需要修改?”**
|
||||||
|
|
||||||
|
#### Git Commit Message 规范
|
||||||
|
|
||||||
|
##### 1)格式
|
||||||
|
|
||||||
|
```text
|
||||||
|
<type>(<scope>): <subject>
|
||||||
|
```
|
||||||
|
|
||||||
|
说明:
|
||||||
|
|
||||||
|
- `<type>`:提交类型(必填)
|
||||||
|
- `<scope>`:影响范围/模块(必填)
|
||||||
|
- `<subject>`:一句话说明“做了什么”(必填)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
##### 2)type 列表
|
||||||
|
|
||||||
|
统一使用小写:
|
||||||
|
|
||||||
|
| type | 含义 |
|
||||||
|
|---|---|
|
||||||
|
| `feat` | 新功能 |
|
||||||
|
| `fix` | 修复 bug |
|
||||||
|
| `docs` | 文档变更 |
|
||||||
|
| `style` | 仅格式/风格(不改语义) |
|
||||||
|
| `refactor` | 重构(不改变外部行为) |
|
||||||
|
| `perf` | 性能优化 |
|
||||||
|
| `test` | 测试相关 |
|
||||||
|
| `build` | 构建系统 |
|
||||||
|
| `ci` | CI 相关 |
|
||||||
|
| `chore` | 杂项维护 |
|
||||||
|
| `revert` | 回滚提交 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
##### 3)scope 列表
|
||||||
|
|
||||||
|
建议从以下范围中选择(保持一致即可):
|
||||||
|
|
||||||
|
| scope | 含义 |
|
||||||
|
|---|---|
|
||||||
|
| `frontend` | 前端(ANTLR 驱动、AST 构建入口等) |
|
||||||
|
| `ast` | AST 相关 |
|
||||||
|
| `sema` | 语义分析(符号表、常量求值等) |
|
||||||
|
| `ir` | IR 核心结构 |
|
||||||
|
| `irgen` | AST → IR 生成 |
|
||||||
|
| `mir` | Machine IR(指令选择、寄存器分配、栈帧等) |
|
||||||
|
| `backend` | 后端目标相关(如需要可细化 `aarch64`) |
|
||||||
|
| `antlr` | 语法文件/ANTLR 相关 |
|
||||||
|
| `build` | 构建配置 |
|
||||||
|
| `test` | 测试 |
|
||||||
|
| `doc` | 文档 |
|
||||||
|
| `misc` | 其他无法归类但需要说明的范围 |
|
||||||
|
|
||||||
|
提交信息示例:
|
||||||
|
|
||||||
|
```text
|
||||||
|
refactor(irgen): 简化 AST → IR 构建流程
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3)后续流程(均不需要用户确认)
|
||||||
|
|
||||||
|
- 暂存所有改动:`git add -A`
|
||||||
|
- 单行摘要:`git commit -m "<type>(<scope>): <subject>"`,需要补充说明时用多行:`git commit -m "<summary>" -m "<detail 1>" -m "<detail 2>"`
|
||||||
|
- 推送:`git push`,推送完成后立即停止,不要再运行其他命令
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
│ │ ├── Value.cpp
|
│ │ ├── Value.cpp
|
||||||
│ │ ├── Instruction.cpp
|
│ │ ├── Instruction.cpp
|
||||||
│ │ ├── IRBuilder.cpp
|
│ │ ├── IRBuilder.cpp
|
||||||
│ │ ├── Printer.cpp
|
│ │ ├── IRPrinter.cpp
|
||||||
│ │ ├── analysis/
|
│ │ ├── analysis/
|
||||||
│ │ │ ├── DominatorTree.cpp
|
│ │ │ ├── DominatorTree.cpp
|
||||||
│ │ │ └── LoopInfo.cpp
|
│ │ │ └── LoopInfo.cpp
|
||||||
@@ -86,17 +86,17 @@
|
|||||||
│ │ ├── DCE.cpp
|
│ │ ├── DCE.cpp
|
||||||
│ │ └── CFGSimplify.cpp
|
│ │ └── CFGSimplify.cpp
|
||||||
│ ├── mir/
|
│ ├── mir/
|
||||||
│ │ ├── MachineContext.cpp
|
│ │ ├── MIRContext.cpp
|
||||||
│ │ ├── MachineFunction.cpp
|
│ │ ├── MIRFunction.cpp
|
||||||
│ │ ├── MachineBasicBlock.cpp
|
│ │ ├── MIRBasicBlock.cpp
|
||||||
│ │ ├── MachineInstr.cpp
|
│ │ ├── MIRInstr.cpp
|
||||||
│ │ ├── Register.cpp
|
│ │ ├── Register.cpp
|
||||||
│ │ ├── Lowering.cpp
|
│ │ ├── Lowering.cpp
|
||||||
|
│ │ ├── RegAlloc.cpp
|
||||||
│ │ ├── FrameLowering.cpp
|
│ │ ├── FrameLowering.cpp
|
||||||
│ │ ├── AsmPrinter.cpp
|
│ │ ├── AsmPrinter.cpp
|
||||||
│ │ └── passes/
|
│ │ └── passes/
|
||||||
│ │ ├── PassManager.cpp
|
│ │ ├── PassManager.cpp
|
||||||
│ │ ├── RegAlloc.cpp
|
|
||||||
│ │ └── Peephole.cpp
|
│ │ └── Peephole.cpp
|
||||||
│ └── utils/
|
│ └── utils/
|
||||||
│ ├── Log.cpp
|
│ ├── Log.cpp
|
||||||
@@ -211,7 +211,7 @@
|
|||||||
- 指令体系:二元运算、比较、load/store、call、br/condbr、ret、phi、alloca 等(按需求逐步补齐)。
|
- 指令体系:二元运算、比较、load/store、call、br/condbr、ret、phi、alloca 等(按需求逐步补齐)。
|
||||||
- `src/ir/IRBuilder.cpp`
|
- `src/ir/IRBuilder.cpp`
|
||||||
- IR 构建工具:集中管理插入点与指令创建,降低 IRGen 复杂度。
|
- IR 构建工具:集中管理插入点与指令创建,降低 IRGen 复杂度。
|
||||||
- `src/ir/Printer.cpp`
|
- `src/ir/IRPrinter.cpp`
|
||||||
- IR 文本输出:打印为 `.ll` 风格文本,支撑调试与测试对比。
|
- IR 文本输出:打印为 `.ll` 风格文本,支撑调试与测试对比。
|
||||||
- `src/ir/analysis/DominatorTree.cpp`
|
- `src/ir/analysis/DominatorTree.cpp`
|
||||||
- 支配树分析:为 `mem2reg`、部分 CFG 优化与循环分析提供基础能力。
|
- 支配树分析:为 `mem2reg`、部分 CFG 优化与循环分析提供基础能力。
|
||||||
@@ -230,27 +230,27 @@
|
|||||||
|
|
||||||
#### 3.2.8 `src/mir/`:Machine IR
|
#### 3.2.8 `src/mir/`:Machine IR
|
||||||
|
|
||||||
- `src/mir/MachineContext.cpp`
|
- `src/mir/MIRContext.cpp`
|
||||||
- MIR 上下文:保存目标约束、指令集信息等(寄存器类定义合并在 `Register.cpp` 中)。
|
- MIR 上下文:保存目标约束、指令集信息等。
|
||||||
- `src/mir/MachineFunction.cpp`
|
- `src/mir/MIRFunction.cpp`
|
||||||
- 机器函数:包含机器基本块、栈帧信息、虚拟/物理寄存器管理等。
|
- 机器函数:包含机器基本块、栈帧信息、虚拟/物理寄存器管理等。
|
||||||
- `src/mir/MachineBasicBlock.cpp`
|
- `src/mir/MIRBasicBlock.cpp`
|
||||||
- 机器基本块:机器指令列表与 CFG 信息。
|
- 机器基本块:机器指令列表与 CFG 信息。
|
||||||
- `src/mir/MachineInstr.cpp`
|
- `src/mir/MIRInstr.cpp`
|
||||||
- 机器指令:opcode + operands(寄存器/立即数/栈槽/符号/标签等)。
|
- 机器指令:opcode + operands(寄存器/立即数/栈槽/符号/标签等)。
|
||||||
- `src/mir/Register.cpp`
|
- `src/mir/Register.cpp`
|
||||||
- 寄存器表示:区分虚拟寄存器与物理寄存器,提供编号/属性等。
|
- 寄存器表示:区分虚拟寄存器与物理寄存器,提供编号/属性等。
|
||||||
- 寄存器类(RegClass):GPR/FPR 等分类与可分配集合描述(供 RA 使用)。
|
- 寄存器类(RegClass):GPR/FPR 等分类与可分配集合描述(供 RA 使用)。
|
||||||
- `src/mir/Lowering.cpp`
|
- `src/mir/Lowering.cpp`
|
||||||
- IR → MIR:从平台无关 IR 生成 AArch64 指令的 MIR(在此完成指令选择),初始使用虚拟寄存器。
|
- IR → MIR:从平台无关 IR 生成 AArch64 指令的 MIR(在此完成指令选择),初始使用虚拟寄存器。
|
||||||
|
- `src/mir/RegAlloc.cpp`
|
||||||
|
- 寄存器分配主入口:将虚拟寄存器分配到物理寄存器,并驱动 spill/reload 等后续处理。
|
||||||
- `src/mir/FrameLowering.cpp`
|
- `src/mir/FrameLowering.cpp`
|
||||||
- 栈帧布局与序言尾声:根据寄存器分配阶段记录的栈槽需求计算栈大小与对齐,插入 prologue/epilogue,保存/恢复 callee-saved 等。
|
- 栈帧布局与序言尾声:根据寄存器分配阶段记录的栈槽需求计算栈大小与对齐,插入 prologue/epilogue,保存/恢复 callee-saved 等。
|
||||||
- `src/mir/AsmPrinter.cpp`
|
- `src/mir/AsmPrinter.cpp`
|
||||||
- 汇编打印:将最终机器指令 MIR 打印为 ARMv8-A 汇编 `.s`。
|
- 汇编打印:将最终机器指令 MIR 打印为 ARMv8-A 汇编 `.s`。
|
||||||
- `src/mir/passes/PassManager.cpp`
|
- `src/mir/passes/PassManager.cpp`
|
||||||
- MIR pass 管理:组织后端 pass 的运行顺序(PreRA/PostRA/PEI 等阶段)。
|
- MIR pass 管理:组织后端 pass 的运行顺序(PreRA/PostRA/PEI 等阶段)。
|
||||||
- `src/mir/passes/RegAlloc.cpp`
|
|
||||||
- 寄存器分配:将虚拟寄存器分配到物理寄存器;spill/reload 在此阶段完成。
|
|
||||||
- `src/mir/passes/Peephole.cpp`
|
- `src/mir/passes/Peephole.cpp`
|
||||||
- 窥孔优化:删除冗余 move、合并常见指令模式,提升最终汇编质量。
|
- 窥孔优化:删除冗余 move、合并常见指令模式,提升最终汇编质量。
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user