我在做一個應用程序,我想使用ExecutionEngine來加載和執行llvm位碼。我已經設法通過迄今爲止通過clang編譯的非常簡單的C代碼來做到這一點。llvm可以從託管語言執行代碼嗎?
我的想法是,如果我使用llvm這個項目,那麼它可能是更多的語言不可知論比說,特別是選擇lua/python/javascript。但是我很困惑這對管理或腳本語言如何工作,因爲它們經常與具有諸如GC之類的資源的平臺綁定。所以我不確定它是如何通過ExecutionEngine實際工作的。
因此,作爲一個示例場景,假設用戶想編寫一些在我的應用程序中運行的python代碼。然後我希望他們向我提供表示該Python代碼的位代碼,然後我將使用llvm的ExecutionEngine在我的C++應用程序中運行該代碼。
這可能嗎? python可以簡單地編譯成位碼,然後使用ExecutionEngine運行?如果不是,我需要知道什麼才能理解爲什麼不呢?
在這種情況下,LLVM與單純的'dlopen'沒有任何區別。 –
因此python將不得不將其運行所需的所有東西(包括GC)編譯到位代碼中?它可以做到這一點?它實際上是否這樣做? –
編譯Python(或任何其他語言)到LLVM位代碼沒有技術障礙。這是不太可能有現有的編譯器。 – delnan