September 13, 2008

COINS 編譯器架構

[COINS] 編譯器架構是由日本文教省資助的研究計畫 (2000-2004),目標是建構可用於研究、教育,與商業應用的編譯器系統架構,支援兩階段的 IR (intermediate representation):
  • HIR: High-level Intermediate Representation
  • LIR: Low-level Intermediate Representation
整個系統可示意如下圖:

此編譯系統由以下元件組成:
  • parser : 轉換原始程式碼為 HIR
  • control flow / data flow analyzers
  • optimizers
  • parallelizers
  • HIR 轉 LIR
  • IR Handler (HIR manager, LIR manager, symbol manager)
  • TMD (target machine descriptions)
  • 依據 TMD 的 backend
  • 編譯過程的視覺化呈現
COINS 內部完全以 Java 語言實做,軟體授權為 ASL (Apache Software License) 2.0。架構圖如下:

以高度模組化著稱的 COINS,允許加入不同硬體平台的支援,並實做 SSA (Static Single Assignment) 與 SIMD 優化的編譯技術,同時支援 OpenMP 平行運算處理,也能透過 CoVis 這個視覺化工具,來分析原始程式碼、HIR/LIR,與 CFG (control flow graph) 的關聯,運作的快照如下:

截至目前為止,最新的釋出版本為 1.4.4.1 (Jun 23, 2008),下載並解開後,可嘗試內建的範例程式: (需安裝 Java Runtime Environment)
jserv@venux:/tmp/coins-1.4.4.1-en$ java -cp classes coins.driver.Driver \
     -I./lang/c/include/samples \
     -coins:target=x86 -coins:assembler=as \
     ./test/c/TestBuna/hello.c
jserv@venux:/tmp/coins-1.4.4.1-en$ ./a.out 
Hello World
當追蹤編譯過程時,只要再追加以下編譯選項:
     -coins:trace=HIR.1/LIR.1/Sym.1
COINS 專案由日本諸多研究人員開發,並有豐富的 [著作發表],來自 Hosei University, The University of Electro-Communications, Tokyo Institute of Technology, Mitsubishi Research Institute, Inc. 等單位,計畫主持人為 Ikuo Nakata 教授。
由 jserv 發表於 September 13, 2008 07:05 PM
迴響

第一张图下方的LIR全称有点问题,与上方的HIR一样了。

leal 發表於 September 13, 2008 11:08 PM

抱歉,是第二张图。

leal 發表於 September 13, 2008 11:10 PM

用java寫的compiler,來編譯C語言,真有意思。

魔法設計師 發表於 September 13, 2008 11:32 PM

jserv大大真是涉猎广泛啊!
顺便弱弱问问:CoVis 是个什么东东? 类似si?

bshawk 發表於 September 17, 2008 01:59 PM

MSR 也有一個類似的專案, Codename: Phoenix, 也可以玩看看, 不過不是 Open Source.

Kuon 發表於 October 5, 2008 09:34 AM
發表迴響









記住我的資訊?