gpt4 book ai didi

python - llvmlite 中的链接 C

转载 作者:太空狗 更新时间:2023-10-30 00:39:16 24 4
gpt4 key购买 nike

我正在用 Python 编写编译器,使用 llvmlite 生成中间 LLVM IR。 Lexer 和 parser 已经完成,现在我正在做代码生成。编译器将是动态的和弱类型的,所以我需要在运行时做一些事情,比如分配。为此,我已经在 C 中实现了一些函数,现在我想使用 llvmlite 中的 builder.call 调用这些函数。

我还没有找到有关如何执行此操作的文档或示例。

这个函数只是一个简单的例子,真实的要大得多。

C:

int some_function(int a)
{
return a + 4;
}

python :

...

main_ty = ir.FunctionType(ir.IntType(32), [])
func = ir.Function(module, main_ty, 'main')
block = func.append_basic_block('entry')
builder = ir.IRBuilder(block)

# I want to do something like this...

ret = builder.call(some_function, [ir.Constant(ir.IntType(32), 34)]);

...

我可以直接使用 llvmlite 构建器编写函数,但在 C 中会更快、更干净、更容易。欢迎任何帮助!

最佳答案

您可以导入包含运行时的动态库。

llvmlite.binding.load_library_permanently("runtime.so")

然后您可以简单地生成正常的函数调用。

关于python - llvmlite 中的链接 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com