2014-03-07 91 views
0

我在verilog中設計了一個小型RISC。我必須採取哪些步驟來創建使用我的彙編語言的c編譯器?或者是有可能修改現有的編譯器GCC一樣,因爲我不想把事情像鏈接,...從彙編器到C編譯器

感謝

+0

一個GCC端口和Binutils端口是不是一個簡單的任務。您的指令集是否已經支持現有的處理器? – Rup

+0

成爲會員一天,第一個問題請創建/修改C編譯器。如果和回答這將是一個至少收費天工作! –

+1

我認爲你會更適應LLVM /叮噹。無論您是否願意,您都必須調查鏈接器腳本等。 –

回答

0

您需要使用未修飾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

+0

謝謝,這就是我所需要的 – user3392008

+0

@ user3392008沒問題 - 如果您發現它有用,隨時提出我的答案:P? –