GCC後端移植雜記

  爲GCC後端移植新的處理器架構的確是一件很是痛苦的事情。前端

  拿到GCC源碼時,發現它的規模比預想中龐大得多,但好在體系結構十分清晰,前端後端高度解耦。解耦的關鍵就在於內部的RTL中間代碼(表達形式相似於LISP語言)。git

  用了大概半個月時間研究RTL原理。以後用了一週時間編寫機器描述文件和基於C語言的指令序列生成邏輯。而後用匯編實現libgcc裏各類軟件浮點和定點乘除操做,最後花了十分鐘完成CRT啓動部分的核心代碼。關鍵是,這些都是利用零碎的課餘時間完成的。github

  最終,配合以前適配的Binutils(包括AS彙編器、LD連接器),GCC已經能夠正常編譯出新架構的ELF文件了。後端

 

(圖左下:用於測試的C源代碼;右上:GCC生成的彙編代碼;左上:利用objdump反彙編GCC生成的目標文件獲得的結果(重定向到了文件)。架構

然而到如今,咱們尚未一個可用的C Runtime Library。接下來計劃繼續移植NewLib。(ˉ▽ˉ;)測試

 

長路漫漫。。。blog

==================源碼

ps: 處理器架構Github主頁在此:https://github.com/cassuto/OpenProcessor-64kit

相關文章
相關標籤/搜索