2010-11-14 53 views
1

你好,我正在尋找一些方向或選擇參考。 我正在構建一個編譯器,但我希望它能夠處理異構類型(如C結構)。一個數組是同質的。 我想知道理論,我知道已經有技術和方法,比如修改變量和東西表中的內容。我發現在鹿丹的書的東西,但它是不完整=(解釋它留在空氣中。記錄類型中間代碼生成

我一直在使用Google,但我不知道該怎麼google一下....

我將不勝感激如何找到現有的一些理論導向和代碼生成,和這樣的。

語言是靜態類型的

+1

您的語言輸入方式如何? – Tobu 2010-11-14 03:41:40

+1

內存是如何管理的? – Tobu 2010-11-14 04:21:49

回答

1

如果foo是一個記錄類型與領域ab和類型tactbtc,則foo的值可以表示爲大小爲sizeof(ta) + sizeof(tb) + sizeof(tc)的大塊存儲器。

如果你的運行時環境(垃圾收集器,反射設施)需要額外的信息存儲的每一個值,你需要預留空間,這點。

現在,如果你有foo類型和訪問的值x例如b(通過編寫x.b或任何您的語言的字段訪問語法),可以將其編譯爲將sizeof(tb)添加到地址x,然後在該地址讀取類型tb的值。

您可能還需要添加一些填充如果記錄的類型有不同的尺寸。

而這一切就是它基本上是這樣。