2012-07-30 18 views
2

我使用LLVM C++ API主要作爲腳本語言的代碼生成器,用於在運行時分析和評估(生成代碼,編譯和執行它)。目前,我正在調查分佈式/併發系統環境下的未來用例,並想知道這些用例是否可以實現以及如何實現。也許你可以分享你的想法:LLVM:在分佈式/併發系統中移動生成的代碼

  1. 有沒有一種方法來生成分佈式 系統中的一個節點上LLVM代碼,它序列化到一些有線格式,將它發送到另一個節點, 編譯或重新編譯它那裏,然後執行它?我已經卡住 找到序列化模塊/函數的方法。
  2. 是否有方法可以在同一個LLVMContext中啓用多線程代碼 的生成/編譯,即線程池共享一個LLVMContext,並同時在這個 上下文中生成/執行代碼。到目前爲止我發現的是,在這種情況下,應該爲每個線程應該使用 作爲LLVMContext。然而,我可以在 共享一個模塊在不同的上下文之間,並與1), 如何將生成的代碼從一個模塊移動到另一個?

回答

1

您肯定可以使用LLVM位碼格式將代碼從一個節點轉發到另一個節點。請參閱include/llvm/Bitcode/ReaderWriter.h以及更多信息。您還可以檢查LLVM工具的來源以查看位代碼是如何序列化和反序列化的。你可能會發現http://llvm.org/docs/BitCodeFormat.html有用。