我正在爲編譯器創建LLVM後端。我想知道是否有任何缺點讓我的後端在文件中寫IR代碼而不是使用API。這些API很複雜(特別是如果使用C++以外的語言,在我的情況下是Haskell)並且很難使用。 IR更容易理解。我不需要JIT編譯,輸出代碼將被標準命令行工具編譯爲機器代碼。寫入LLVM源文件與使用API
1
A
回答
3
紅外格式從版本變爲版本。 API變化的頻率要低得多。過去有些例子顯示IR格式發生了巨大變化,所以您需要投入大量時間來容忍這些變化。
使用API是最好的方法。如果有時您不清楚哪些API調用您將需要 - 您可以使用cpp後端作爲靈感的來源:)
2
正如Anton所說,與使用文本IR相比,使用API具有明顯的優勢。我只想解決您提出的關於API的複雜性以及Haskell的使用情況。
請注意,LLVM有一個C API,除了更穩定外,它適用於外語界面。使用此API的LLVM存在Python綁定,以及Haskell綁定(Google提供的this is easily found)以及其他語言。
相關問題
- 1. 在LLVM使用多個源文件通過與CMake的
- 2. 使用bach寫入文件
- 3. 使用Java寫入文件
- 4. 使用node.js寫入文件
- 5. 使用PHP寫入文件
- 6. 使用register_shutdown_function寫入文件
- 7. 寫入文件使用python
- 8. 使用makefiles寫入文件
- 9. 使用Java寫入文件
- 10. 使用ajax寫入文件?
- 11. 使用JavaScript寫入文件
- 12. 使用流寫入文件
- 13. 使用PHP文件寫入
- 14. 使用Java寫入文件
- 15. 使用getResource寫入文件
- 16. NetLogo - 讀取和寫入Java API使用的文本文件
- 17. 使用試用資源讀取和寫入文件
- 18. 使用文件:序列化以寫入文件與eXist分貝
- 19. Python:使用Popen()與文件對象在Linux中寫入文件
- 20. 文件寫入與DMZ
- 21. LLVM:如何將IR寫入文件並運行?
- 22. 寫入嵌入在資源文件中的文本文件C#
- 23. 使用JSON API寫入Rails
- 24. 使用OpenMP與llvm-clang
- 25. 在寫入文件時失去電源
- 26. 在Android中寫入資源文件
- 27. 如何寫入資源文件?
- 28. 將資源文件寫入USB
- 29. LLVM:使用llvm生成特定z80處理器的「ir」文件
- 30. 使用Android PdfDocument API編寫PDF文件
我確實知道Haskell綁定..但它們是限制性的(它們不允許動態數量的函數參數,在Haskell程序編譯時不知道)。我也誠實地發現這個API很醜陋,不直觀。 – aelguindy 2012-02-03 15:10:45
@aelguindy:好吧,你的里程可能會有所不同:-)請記住寫作IR也很平凡,因爲它是一種複雜的語言。即你必須自己跟蹤所有的註冊名稱 - API可以幫你。 – 2012-02-03 15:32:21