我想使用GCC類型作爲JIT編譯器,我只需編譯短片段的代碼。雖然我當然可以爲我想編譯的每個函數分配一個GCC進程,但是我發現GCC的啓動開銷太大了(我的計算機似乎大約需要50毫秒,這會花費50秒來編譯1000功能)。因此,我想知道是否可以將GCC作爲守護進程運行,或者將它用作庫或類似的東西,這樣我就可以提交一個編譯函數而不需要啓動開銷。我可以運行GCC作爲守護進程(或將它用作庫)嗎?
如果你想知道,我不考慮使用實際的JIT庫的原因是因爲我沒有找到一個支持所有我想要的功能,其中至少包括ABI的良好知識,以便它可以處理結構參數(缺少GNU Lightning),嵌套函數(包含缺少libjit)和C語言接口(缺少LLVM;我也認爲LLVM缺少嵌套函數)。
不,我不認爲我可以將函數一起批量編譯;一半的觀點是,我想只在第一次實際調用它們時才編譯它們。
我注意到libgccjit,但從我所知道的看來,它似乎很實驗性。
你確定C首先是一種很好的語言嗎?有像lua這樣的語言更適合這種操作,至少這是我想到的。 – user2485710
我很確定。 :)更準確地說,我想在一個以C編寫的系統中使用它。 – Dolda2000
不是迂腐,但Lua運行在C運行的地方,考慮到所需的系統規範和C編譯器的必要性,兩種選擇。 lua解釋器是ANSI C代碼,並且有使用lua的低端ARM芯片組,它們運行非常流暢。 – user2485710