是否可以在 LLVM-IR 的基础上实现一个管理多个正在运行的程序的层?
背景:我有几个小程序(应该直接用 IR 编码或从 clang 转换为 IR)。它们可能会在 IR 级别上进行更改,然后应该在给定架构上/针对给定架构进行编译并在那里运行(并行)。应该有一个中央实例,它监督个体,可能产生新个体。程序间通信应该是可能的。
不使用 IR,我可以使用 c/c++ 和一些系统特定的线程/消息传递工具。
如果我理解正确,我可以将代码翻译成 IR;但如果 IR 与目标无关,这不会失败吗?如果不是,这意味着应该有用于程序间通信的 IR 级工具......
所以我对此感到困惑。我通读了 LLVM 文档,但到目前为止还不清楚。有什么提示吗?
更新:
到目前为止,我找到了一个可能的(依赖于目标的)解决方案。On 可以在 clang 中对管理层进行编码,使用 clang 解释器 (jit) 方法来处理那些被“jitted”然后由管理层作为线程(例如使用 pthread)产生的个体。
如果我理解正确,目标特定部分作为外部输入 IR 代码。从这个意义上说,IR 与平台无关,因为给定 clang 代码生成的 IR 使用了特定于平台的包含。使用 newlib,可以获得标准 clib 功能作为源,适用于多个目标。所以使用 newlib+clang,IR 不是平台独立的,但是从源代码到最终机器代码的过程是灵活的(在可用的 newlib&llvm 目标中)。
正确的?
使用循环类型调度生成线程怎么样?我猜这将取决于平台(例如通过使用 pthread)。
正确的?