指令命名
February 8, 2026 · View on GitHub
本文档规定了 SakuraE IR 指令的命名规范,以防止命名混淆。
- 每个指令名称的前缀必须是指令的唯一标识符,多单词名称中使用下划线 ("_") 代替连字符 ("-")。
e.g. 指令"cond-br"应该被命名为"cond_br" 例:
block.hpp: line 85:IRValue* createCondBr(IRValue* cond, IRValue* thenBlock, IRValue* elseBlock) { if (!instructions.back()->isTerminal()) return createInstruction(OpKind::cond_br, IRType::getVoidTy(), {cond, thenBlock, elseBlock}, "cond_br.(" + thenBlock->getName() + ").(" + elseBlock->getName() + ")"); return nullptr; }
- 对于具有方向性或引用含义的指令,目标对象应使用点号 (.) 分隔。
例如:
generator.cpp: 第 457 行:curFunc() ->block(thenExitBlockIndex) ->createInstruction(OpKind::br, IRType::getVoidTy(), {mergeBlock}, "br.if.merge");在
cond-br指令的情况下,跳转目标mergeBlock应附加到指令别名后,并用点号 (.) 分隔。