我编写了以下简短的汇编 LLVM 代码(我知道它仅用于测试目的并不有效):
define void @main() {
label_41:
%t22 = add i32 0, 0
label_43:
%t23 = add i32 0, 0
}
Run Code Online (Sandbox Code Playgroud)
当我尝试像这样运行它时,出现错误:
Downloads % /usr/local/opt/llvm/bin/lli t02.out
/usr/local/opt/llvm/bin/lli: lli: t02.out:4:1: error: expected instruction opcode
label_43:
^
Run Code Online (Sandbox Code Playgroud)
有什么问题,缺少哪个操作码?
int*_*jay 10
LLVM 中的标签开始一个新块。并且每个块必须以终止符指令结束,例如retorbr。
LLVM 给出错误,因为它到达了标签,但前面的块没有以终止符指令结束。要使其编译,您需要在label_43:函数结束之前和之前添加终止符指令。