当使用 LLVM Interpreter(Aka lli
) 时,Instruction
对象在Interpreter::run()
函数中运行,就像在代码中一样。
void Interpreter::run() {
while (!ECStack.empty()) {
// Interpret a single instruction & increment the "PC".
ExecutionContext &SF = ECStack.back(); // Current stack frame
Instruction &I = *SF.CurInst++; // Increment before execute
// Track the number of dynamic instructions executed.
++NumDynamicInsts;
DEBUG(dbgs() << "About to interpret: " << I << "\n");
visit(I); // Dispatch to one of the visit* methods...
}
}
带有DEBUG
预处理器的行将打印这样的 .ll 文件中写入的指令。
即将解释:%retval = alloca i32, align 4
如何获取 LLVM IR 变量的名称?
在这种情况下会%retval
。