我正在編寫F#編譯器Tiger,我終於達到了無法推遲目標體系結構決策的程度。Tiger編譯器的目標體系結構
這是我的第一個編譯器,但它肯定不會是我的最後一個。那麼......對於第一個編譯器來說,什麼是好的 目標體系結構?
我曾考慮過針對CIL(.NET),但the book 中的中間代碼似乎更適合註冊機器。
我也想知道我完成這個編譯器後應該去哪裏。我應該嘗試 針對另一種架構嗎?我應該關注編譯器的另一部分嗎?爲什麼?
我正在編寫F#編譯器Tiger,我終於達到了無法推遲目標體系結構決策的程度。Tiger編譯器的目標體系結構
這是我的第一個編譯器,但它肯定不會是我的最後一個。那麼......對於第一個編譯器來說,什麼是好的 目標體系結構?
我曾考慮過針對CIL(.NET),但the book 中的中間代碼似乎更適合註冊機器。
我也想知道我完成這個編譯器後應該去哪裏。我應該嘗試 針對另一種架構嗎?我應該關注編譯器的另一部分嗎?爲什麼?
如果您使用F#寫的編譯器,發射CIL肯定聽起來是個不錯的決定,因爲你將能夠使用的CodeDOM等的所有內置功能
或者你可以設計你自己的輸出格式,並編寫一個運行在.NET內部的虛擬機,如果這樣會使輸出變得更容易(由於是更合適的體系結構)。它可能更容易調試 - 儘管當然它的確意味着編寫虛擬機:)
您是否考慮過針對x86彙編? 幾年前,我自己做了一個Tiger編譯器,而程序集發佈者雖然很難寫,但卻是整個項目中最有價值的東西之一。用C編寫自己的小型虛擬機也是一個好的(如果不是更好的)想法。
如果您正在創建一種生產語言,但是從練習中移除了許多學習可能性,那麼以現有VM爲目標是務實的。
如果我是你,我會仔細看看項目後期的不同優化技術。
我確實已經考慮過x86彙編和編寫虛擬機。我只是想知道RISC架構是否可能會更好。有什麼想法嗎? – 2009-07-06 13:25:31
我決定爲x86寫一個後端,也許以後再寫一個MIPS。無論如何,我可能會再次編寫整個編譯器。 – 2009-07-13 21:23:51