2015-08-15 105 views
0

1)使用IRBuilder可以獨立於操作系統生成系統調用嗎?我讀過這樣的內容:http://llvm.lyngvig.org/Articles/Mapping-High-Level-Constructs-to-LLVM-IR#59 看來,當我生成LLVM IR並想要生成系統調用,例如輸出到終端時,我必須將LLVM IR定製到Linux/Windows/Mac。或者LLVM有一些系統調用的接口?與操作系統無關的LLVM IR系統調用

2)有這個工具http://llvm.org/docs/CommandGuide/llc.html能夠做我想要的東西在1)?

+0

我也希望有關鏈接,系統調用和這些東西的學習材料的任何提示。 –

回答

2

絕對不是。 LLVM是一個編譯器後端;它不關心繫統調用。系統調用通常在平臺的C庫中使用,它通過混合使用低級C和特定於目標的程序集來實現它們。系統調用既取決於操作系統又取決於目標(CPU)。

關於研究這些東西的更多材料 - 你有我的同情心。這不是一個有據可查的地方,因爲99.9%的程序員從不需要在這個級別上運行。我建議你開始拿起一些基本的彙編程序並從那裏開始。

+0

謝謝!那麼,如果我想爲我的玩具語言編寫LLVM IR,在Linux和Windows終端上打印「Hello world」,那麼解決方案是什麼? –

+1

@OndrejSmid:你可以調用一個標準的C庫函數,如'puts',並將你的IR創建的目標文件與C庫鏈接起來。如果你想避免C庫,你必須實現你自己的系統調用包裝 –