模块分析:目标架构相关目录
1. 覆盖架构
arm/, aarch64/, powerpc/,
riscV/, x86/
- 辅助架构描述:
x86_32/, x86_64/(主要是
Archi.v 配置)
2. 各架构目录的通用组成
Archi.v: 架构级参数(指针宽度、字节序等)
Machregs.v + Machregsaux.ml:
机器寄存器集合与映射
Op.v: 目标操作与指令语义映射
Conventions1.v: 调用约定
Stacklayout.v: 栈布局与栈帧结构
SelectOp.vp / SelectLong.vp /
SelectDiv.vp: 指令选择规则
CombineOp.v: 组合规则
ConstpropOp.vp, NeedOp.v:
常量传播与需求分析的目标特化
Asm.v: 汇编级 IR 定义
Asmgen.v: Mach → Asm 的代码生成
Asmexpand.ml: 汇编级扩展/修正
PrintOp.ml, TargetPrinter.ml:
汇编打印
AsmToJSON.ml: JSON 输出(用于调试/分析)
CBuiltins.ml, Builtins1.v: 目标相关
builtin
3. 实现要点
- 指令选择与常量传播均依赖目标模块中定义的
SelectOp/CombineOp
Asmgen 与 Machregs 结合,将 IR
的虚拟寄存器映射到目标机器寄存器/指令
Asmexpand
在驱动层调用,处理目标汇编语法或伪指令展开
4. 架构配置
x86_32/Archi.v, x86_64/Archi.v 用于区分
32/64 位模式
- 具体配置由
driver/Frontend.ml 中的
Machine.config 选择