回答
您需要使用未修飾C詞法分析器+(通常稱爲前端)以及一個修改後的代碼生成組件(後端)。
Eli Bendersky's pycparser可以作爲前端,以及阿圖爾的小型C編譯器可作爲靈感的代碼生成後端:http://people.cs.uchicago.edu/~varmaa/mini_c/
與禮Bendersky的pycparser,所有你需要做的是AST轉換爲一個控制流程圖(CFG)並從那裏生成代碼。開始支持C的子集比完整的sheb更容易。
兩個工具都是用Python編寫的,但你沒有提到任何實現語言首選項:)
我發現最開放sourcen編譯器(除了鐺看來)過於緊密耦合輕鬆修改後端。鏗鏘和特別是海灣合作委員會不容易進入,無處不在,就像上面兩個一樣容易。而且由於Eli的解析器完全使用了C99(它解析了我所提到的一切),所以它似乎是一個很好的前端,可用於進一步的開發。 The examples on the Github project演示該項目的大部分功能,並且很容易上手。將C解析爲文字的例子值得一看,但可能需要一段時間才能充分發揮作用。它基本上處理任何C表達式,因此它是如何處理AST的不同節點的一個很好的參考。
我也建議的工具上面,在我回答這個問題:Build AST from C code
謝謝,這就是我所需要的 – user3392008
@ user3392008沒問題 - 如果您發現它有用,隨時提出我的答案:P? –
- 1. C51 C編譯器內聯彙編到SDCC內聯彙編
- 2. 彙編中的C#編譯器
- 3. GCC C彙編器
- 4. 從C到UAL彙編的UAL彙編
- 5. IAR彙編器是否可能從C頭導入#define到彙編器?
- 6. 反編譯彙編程序到c
- 7. 編譯C代碼到MIPS彙編
- 8. 彙編&C - 翻譯C'S代碼彙編
- 9. CUDA編譯器產生unoptimal彙編
- 10. 使用as88彙編器從彙編代碼調用C函數
- 11. 用C++編譯器編譯c代碼
- 12. 從Sun C編譯器遷移到gcc
- 13. 彙編器,解釋器和編譯器的圖像?
- 14. 將C和彙編編譯爲純機器代碼?
- 15. ç內聯彙編幫助(數字火星C編譯器)
- 16. 編譯器如何編譯編譯器?
- 17. C++編譯器17
- 18. Ubuntu編譯器(C++)
- 19. CodeDom編譯器C#
- 20. C編輯器或Windows CE編譯器
- 21. Objective-C編譯器和編輯器
- 22. Visual C++編譯器,編譯錯誤stdlib.h
- 23. 如何在C++中編譯編譯器?
- 24. 用C++編譯器編譯Apache
- 25. 用C++編譯器編譯C99文件
- 26. 更改編譯C編譯器
- 27. 使用scons編譯器編譯C++
- 28. 翻譯C++來MIPS彙編
- 29. 從Windows移植到Linux。彙編器命令翻譯
- 30. 反編譯的ARM彙編回C
一個GCC端口和Binutils端口是不是一個簡單的任務。您的指令集是否已經支持現有的處理器? – Rup
成爲會員一天,第一個問題請創建/修改C編譯器。如果和回答這將是一個至少收費天工作! –
我認爲你會更適應LLVM /叮噹。無論您是否願意,您都必須調查鏈接器腳本等。 –