我已將一些C函數編譯爲LLVM字節碼。 現在我想讓這些功能可以通過Lua腳本引擎訪問,然後將Lua腳本編譯爲本地機器代碼。使用LLVM JIT編譯lua包裝的C函數?
我找到了使用llvm編譯lua腳本的llvm-lua項目。 我現在想知道是否可以執行從lua腳本調用的C函數的jit編譯和優化。
例如,我有這兩個C函數:
void func1() {
for(int i = 1; i < 5; ++i)
printf("hello from func1");
}
void func2() {
for(int i = 1; i < 5; ++i)
printf("hello from func2");
}
和我揭露他們的一個Lua腳本引擎並運行Lua中那樣:
func1()
func2()
然後我想的llvm-lua編譯器將其優化並編譯成相應程序
for(int i = 1; i < 5; ++i) {
printf("hello from func1");
printf("hello from func2");
}
和不是分成
for(int i = 1; i < 5; ++i)
printf("hello from func1");
for(int i = 1; i < 5; ++i)
printf("hello from func2");
有沒有可能實現這一點?
乾杯,
曼努埃爾
是的,這聽起來像是可能的,至少在抽象中......你有什麼特別的麻煩? – servn 2011-05-29 23:19:39
沒有編譯器會執行該優化,因爲它執行可觀察的差異(輸出將按不同順序排列)。 – celion 2011-05-30 01:07:10
你看過luajit嗎?最新的版本是非常有前途的速度 - 也許你可以完全擺脫C。 – 2011-06-23 02:39:23