Oberon/編譯器
此文件最初託管在 ETHZ。它保留在 ETH 許可證 下,並且在 WayBack 存檔 中。
| 名稱 | 技術 | 支援的語言 | 特點 | 前端作者 | 後端作者 |
|---|---|---|---|---|---|
| Ceres | 單遍遞迴下降解析器,直接程式碼生成 | Oberon | N. Wirth, J. Gutknecht | NS32xxx: N. Wirth ARM: N. Wirth[1] StrongARM: A. Signer | |
| OberonSA | 單遍遞迴下降解析器,直接程式碼生成 | OberonSA = Oberon 子集 | N. Wirth | OLGA: N. Wirth | |
| NOSAP | 單遍遞迴下降解析器,直接程式碼生成 | OberonSA 擴充套件 | M. Sanvido | OLGA: M. Sanvido | |
| OP2 | 單遍遞迴下降解析器,生成中間解析樹 | Oberon, Oberon-2 | 細粒度指紋識別,[2] 前端 + 後端架構 | (1989) R. Crelier | (1989) MIPS: R.Crelier (1989) i386: N. Mannhart (1989) 68000: M. Franz (1989) SPARC: J. Templ (1990) Amiga: S. Ludwig, C. Nieder, R Degner (1991) Power: M. Brandis (1991) PA-RISC: J. Supcik (1994) PowerPC: T. Kistler, A. Wuerz - Uni Linz (1994) OMI: M. Franz, T. Kistler (1995) DEC/HP Alpha (64 位):[3] Guenter Dotzel, Hartmut Goebel, Peter Pirkelbauer, Don Ward[4] |
| 增強版 OP2 | 單遍遞迴下降解析器,中間解析樹 | Oberon, Oberon-2, Oberon-X, Active Oberon, 嵌入式彙編器 | 細粒度指紋識別,前端 + 後端架構 | R. Crelier, P. Reali - 新增 | i386: P. Reali SPARC: G. Feldmann (新增) |
| Paco | 單遍遞迴下降,範圍併發解析器 | Oberon, Active Oberon, 嵌入式彙編器 | 前端 + 後端架構,動態可插拔程式碼生成器,併發 | P. Reali | Paco 的 i386: P. Reali, StrongARM: B. Egger |
| Oberon.Net | 單遍遞迴下降解析器 | 用於 .net 的 Active Oberon | J. Gutknecht, B. Smith-Mannschott, H.P. Hoegger, P. Kramer, T. Frey | 後端:MS-IL | |
| Hyperstone Oberon | 兩遍前端 + 後端編譯器 | Oberon | H.P. Hoegger | Hyperstone: P. Kramer 核心: T. Frey, O. Joos | |
| OP2 T800 交叉編譯器 | 單遍遞迴下降解析器;生成中間解析樹。 | Oberon-2 | 缺少細粒度指紋識別。缺少超程式設計 | (1989) R. Crelier | (1994) Stephane Micheloud;[5] |
| 作業系統 | ETH Oberon 埠 | 前端 | 後端 | B.E. 維護者 |
|---|---|---|---|---|
| 原生 | 原生 Oberon | 增強版 OP2 | i386 | Patrik Reali |
| Linux | Linux 原生 Oberon (LNO) | Peter Matthias | ||
| 用於 Linux x86 的 Oberon | Günter Feldmann | |||
| 用於 Linux PPC 的 Oberon | PPC | |||
| Solaris | 用於 Solaris x86 的 Oberon | i386 | ||
| 用於 Solaris SPARC 的 Oberon | SPARC | |||
| MacOs X | 用於 Mac OS X 的 Oberon | PPC | ||
| Windows | 用於 Windows 的 PlugIn Oberon | i386 | ||
| Bluebottle | 用於 Bluebottle 的 Oberon | Paco | Paco 的 i386 | Patrik Reali |
| Paco 的 ARM | Bernhard Egger | |||
| 增強版 OP2 | i386 | Patrik Reali |
前端維護者
- 增強版 OP2,Paco (並行編譯器): Patrik Reali
OP2 和 Paco 之間的區別
Paco 在以下方面與 OP2 不同
- Paco 是一個用 Active Oberon 編寫的全新編譯器。它依賴於活動物件執行:每個範圍都由一個解析器物件併發解析。目前這並不更快,但簡化了前向引用的處理。
- 語言支援:不支援 Oberon-2,對 Oberon-X 的支援有限(半動態陣列,使用者定義的返回值型別)
- 中間表示:接近 SSA 形式的低階彙編程式式表示(無限暫存器,分配一次)。
- 後端:熱插拔後端(目前為 i386 和 StrongARM)
關於用於 LinuxPPC 和 MacOs X 的 PowerPC 編譯器的說明
在增強版 PowerPC 編譯器(在 2.3.8 版本中引入)中,集合的位順序與其他編譯器(x86、SPARC 等)相容(SYSTEM.VAL(LONGINT, {0}) = 1)。
舊的 PowerPC 編譯器(用於 MacOberon 和 PowerOberon (V4)(見下文))以反向位順序表示集合({0} = 2^31)。這使得帶有型別強制轉換的混合整數和集合操作(在加密演算法中被大量使用)不可移植。這可能是模組 BIT 要克服這種不相容性的目標之一。但使用模組 BIT 使演算法可讀性降低,效率也降低。
| 作業系統 | ETH Oberon 埠 | 前端 | 後端 |
|---|---|---|---|
| 原生 | 用於 DNARD 的 SharkOberon | Ceres | ARM |
| 基於 DOS 的原生 Oberon | 增強版 OP2 | i386 | |
| Windows | 用於 Windows 的 Oberon | 增強版 OP2 | i386 |
| Windows 3.x | 用於 Windows 的 Oberon System 3 | OP2 | i386 + OMI |
| MacOs | MacOberon System 3 | OP2 | PPC / 68000 + OMI |
| MacOs 6.x 到 9.x | MacOberon | OP2 | PPC + OMI |
| HP-UX | 用於 HP-UX 的 Oberon System 3 | OP2 | PA-RISC |
關於 Slim Binaries 的說明,通常稱為“OMI”
OMI 現在已經成為歷史,並且沒有在當前的 ETH Oberon 系統中實現。這項非常有趣技術沒有整合到新編譯器中,因為我們多次改變了語言,這需要對編譯器進行一些深層的更改。我們擁有的 OMI 實現(現在仍然存在)針對 OP2 解析樹進行了最佳化,以至於更改解析樹或符號表中的任何內容都會破壞或損害它,並且應該首先對其進行去最佳化甚至為新的解析樹重寫。無論如何,這仍然是可能的,並且很有趣,讓某人接管 OMI 程式碼並將其調整為用於 Active Oberon 的擴充套件符號表和解析樹。
一些較早的埠是在 Oberon V4 專案的背景下編寫的,雖然不再維護,但仍然可以下載
- MacOberon - Motorola 680x0
- SPARC-Oberon - Sun SPARC
- 用於 Amiga 的 Oberon - Motorola 680x0
- POWERoberon - IBM RISC System/6000
- HP-Oberon - HP Apollo Series 700
- Power MacOberon - PowerPC
| 為 ETH Oberon 編寫或修改的文件 | 網路 | 包含在發行版中 |
|---|---|---|
| Oberon 程式語言(報告) | html | OberonReport.html, OberonReport.ps |
| Oberon EBNF | html | OberonEBNF.ps |
| 模組 SYSTEM | html | 否 |
| Active Oberon 語言擴充套件 | html | 否 |
| Active Oberon 語言報告 | html | 否 |
| 用於 .net 的 Active Oberon 白皮書 | MS Word 文件 | 否 |
| Oberon-X 擴充套件 | html | 否 |
| Oberon Kurs,作者:Günther Sawitzki | html | 否 |
| Oberon 簡介,作者:Günther Sawitzki | html | 否 |
| 為 Oberon V4 編寫的文件 | Postscript | gnu-comp | V4 文字 [1] | TeX | HTML |
|---|---|---|---|---|---|
| 來自 Modula Oberon(報告) | ps | ps.gz | 文字 | ||
| Oberon 程式語言(報告) | ps | ps.gz | 文字 | 這裡 | |
| Oberon EBNF | ps | ps.gz | 文字 | ||
| Oberon-2 程式語言(報告) | ps | ps.gz | 文字 | Excelsior | UCSD UUlm |
| Oberon 和 Oberon-2 之間的區別 | ps | ps.gz | 文字 | ||
| Oberon-2 變更列表 | ps | ps.gz | 文字 | 這裡 | |
| Oberon-2 中的面向物件程式設計 | ps | ps.gz | 文字 | ||
| Oberon 指南 - 系統版本 1.2 | ps | ps.gz | 文字 |
說明 [1]:傳統的瀏覽器無法顯示 Oberon 文字檔案。在 V4 中,它由編輯器顯示。在 ETH Oberon 中,開啟後,必須透過執行 WTS.Convert Temp.FTP.Text 將文字轉換為 ETH Oberon 文字。轉換後的文字將替換原始文字。
- Hostess:Oberon 編譯器測試套件 [ hostess.sourceforge.net ]
- 編譯器選項
- 陷阱編號 (僅限增強版 OP2 和 Paco)
- ETH 技術報告 125:R. Crélier;OP2:一個可移植的 Oberon 編譯器 [ PDF。開啟 ETH 技術報告頁面 並搜尋“Portable Oberon” ]
- 編譯器構造,作者:Niklaus Wirth
- 組合語言程式設計藝術
- 組合語言 華夏公益教科書。
- 原生 2.3.6 及更早版本 [ html | pdf ]
- 原生 alpha 和 beta 版本,2.3.7 Unix 版本 [ html | pdf ]
- Aos/Bluebottle 版本,2006 年 11 月 17 日及以後 [ html | pdf ]
根據我們的經驗,為新的體系結構編寫一個簡單的 Wirth 式編譯器相對容易。例如,A. Signer(當時還是一名學生)為 StrongARM 編寫了編譯器後端,並在四個月內移植了 ETH Oberon 系統。
Wirth 編譯器的優勢在於它基於一些固定的程式碼模式,這些程式碼模式直接生成,而無需先構建程式的內部表示。這簡化了設計。
Paul Reed 將程式碼模式過程更改為回撥,這使他能夠插入不同的程式碼生成器。
當然,在支援內部中間形式的編譯器(如 OP2)中實現最佳化更容易,但增加的複雜性只有在你實際有時間學習和實現最佳化演算法的情況下才能得到回報。
規範版本位於ftp://ftp.ethoberon.ethz.ch/Oberon/Books/ProjectOberon/ [已過期]
2002年10月28日 - 版權所有 © 2002 瑞士聯邦理工學院蘇黎世。保留所有權利。
電子郵件:oberon at lists.inf.ethz.ch
主頁:http://www.ethoberon.ethz.ch/