我正在爲編譯器創建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. 使用Java寫入文件
- 2. 使用node.js寫入文件
- 3. 使用流寫入文件
- 4. 使用PHP寫入文件
- 5. 使用Java寫入文件
- 6. 使用makefiles寫入文件
- 7. NetLogo - 讀取和寫入Java API使用的文本文件
- 8. 使用試用資源讀取和寫入文件
- 9. 使用文件:序列化以寫入文件與eXist分貝
- 10. Python:使用Popen()與文件對象在Linux中寫入文件
- 11. 文件寫入與DMZ
- 12. 使用OpenMP與llvm-clang
- 13. 將資源文件寫入USB
- 14. 在Android中寫入資源文件
- 15. 如何寫入資源文件?
- 16. 使用Android PdfDocument API編寫PDF文件
- 17. 使用WriteFile API將Unicode字符串CString寫入文件
- 18. 如何使用PHP文件API來寫入原始字節?
- 19. 如何使用實驗性API將大文件寫入Blobstore?
- 20. 如何通過使用Vbscript寫入和寫入文本文件
- 21. Ruby API - JSON解析 - 寫入文件
- 22. 讀取和寫入文件Dropbox API V2
- 23. Wordpress REST API - 寫入JSON文件?
- 24. 使用Javascript寫入文本文件
- 25. 使用流寫入文本文件
- 26. 無法寫入與火花RDD API序列文件
- 27. 使用Python將MySQL數據作爲源文件寫入HTML文件?
- 28. 使用LLVM API生成靜態代碼
- 29. Google雲端存儲API寫入特殊字符文件與常規python文件
- 30. 我可以寫入嵌入式資源文本文件嗎?
我確實知道Haskell綁定..但它們是限制性的(它們不允許動態數量的函數參數,在Haskell程序編譯時不知道)。我也誠實地發現這個API很醜陋,不直觀。 – aelguindy 2012-02-03 15:10:45
@aelguindy:好吧,你的里程可能會有所不同:-)請記住寫作IR也很平凡,因爲它是一種複雜的語言。即你必須自己跟蹤所有的註冊名稱 - API可以幫你。 – 2012-02-03 15:32:21