LLVM:在分布式/并发系统中移动生成的代码

时间:2012-07-30 14:06:48

标签: concurrency code-generation llvm move

我正在使用LLVM C ++ API作为脚本语言的代码生成器,在运行时解析和评估(生成代码,编译和执行它)。目前,我正在调查分布式/并发系统环境中的未来用例,并想知道这些用例是否以及如何实现。也许你可以分享你的想法:

  1. 有没有办法在分布式的一个节点上生成LLVM代码 系统,将其序列化为某种有线格式,将其发送到另一个节点, 在那里编译或重新编译然后执行它?我已经卡住了 找到序列化模块/功能的方法。
  2. 有没有办法启用多线程代码 生成/编译在同一个LLVMContext中,即一个池 线程共享一个LLVMContext并在其中生成/执行代码 背景同时。到目前为止我发现的是应该 在这种情况下,每个线程都是一个LLVMContext。但是,我可以 在不同的上下文之间共享一个模块并与1)相关, 我怎样才能将生成的代码从一个模块移动到另一个模块?

1 个答案:

答案 0 :(得分:1)

您绝对可以使用LLVM bitcode格式将代码从一个节点转发到另一个节点。有关详细信息,请参阅include / llvm / Bitcode / ReaderWriter.h及其周围。您还可以检查LLVM工具的来源,以了解如何序列化和反序列化bitcode。您可能会发现http://llvm.org/docs/BitCodeFormat.html很有用。