我想知道如何将Julia代码转换为可运行的LLVM IR(* .ll文件)。
有一个名为code_llvm
的命令可以将Julia函数编译为LLVM IR。但它的结果包含类似%jl_value_t*
的东西,似乎是一个(隐藏?)对象类型,它看起来不像纯LLVM IR。
有没有办法从Julia生成可运行的LLVM IR,以便我可以使用lli xx.ll
运行它(或做其他事情)?
答案 0 :(得分:1)
code_llvm
函数默认情况下仅显示该函数,但是您也可以将其打印出完整的模块:
open("file.ll", "w") do io
code_llvm(io, +, (Int, Int); raw=true, dump_module=true, optimize=true)
end
此输出(file.ll
)现在可以与其他llvm工具一起使用,例如llc
和opt
。但是,由于这只是该功能的代码,并且假定存在所有其他代码和数据,因此不一定要与lli
配合使用,因此请当心购买者。
如果您想要一个完整的系统,您可能会对Julia的--output-bc
标志感兴趣,该标志将转储LLVM格式的完整目标文件。这在内部广泛用于构建和引导Julia。它还封装在https://github.com/JuliaLang/PackageCompiler.jl的实用工具中,以自动执行其中一些步骤。