跳轉到內容

Oberon/編譯器

來自華夏公益教科書

此文件最初託管在 ETHZ。它保留在 ETH 許可證 下,並且在 WayBack 存檔 中。

Oberon 編譯器和語言參考材料
 
編譯器概述
名稱 技術 支援的語言 特點 前端作者 後端作者
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 專案的背景下編寫的,雖然不再維護,但仍然可以下載

Oberon 語言報告和相關文件
為 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 文字。轉換後的文字將替換原始文字。

語言示例
編譯器文件和資源
書籍
目標檔案格式
  • 原生 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/

參考資料

[編輯 | 編輯原始碼]
華夏公益教科書