Whirl(中間表示語言)

本詞條是多義詞,共3個義項
更多義項 ▼ 收起列表 ▲

WHIRL 是 Open64 編譯器使用的一種編譯器中間表示語言。WHIRL不僅是貫穿於整個編譯進行的全過程的一種信息傳遞方式,更是編譯最佳化、前後端溝通的載體。

基本介紹

  • 中文名:中間表示語言
  • 外文名:WHIRL 
  • 領域:編譯/編譯器/編譯工程
  • 分層:最高/高/中/低/最低
  • 多模組:是
  • 套用Open64
概述,結構,全局結構,局部結構,使用方法,創建方法,初始化方法,IDX的使用,數據類型,歷史,

概述

WHIRL是Open64編譯器使用的一種編譯器中間表示語言。這套表示語言是為了提高編譯器執行效率而設計的,
WHIRL是根據編譯的全流程進行設計的,並且同一套WHIRL可以套用在編譯的前後端全過程中,這包括WOPT(全局最佳化),LNO(LOOP Nest Optimizer),IPA(跨函式分析),CG(彙編代碼生成)等最佳化、編譯過程中。
在編譯流程進行中,編譯器使用的 IR 由含有高層表示信息的VH WHIRL 轉化為了 High WHIRL, Middle WHIRL, Middle WHIRL 經過 WOPT 轉換為了 Low WHIRL, CG過程 可以將Low WHIRL轉化為彙編代碼,進而可以調用系統的彙編、連結工具,生成二進制程式。

結構

WHIRL 的構成是按照語法層級的高低來分層,在每個層的內部又分為ST、TY、INITO等模組

全局結構

全局結構有以下幾個部分構成:
WHIRL Node (可執行的指令 AST)
Scope Table(Scoping 使用)
Symbol Table (ST_TAB)
Type Table (TY_TAB)
Program Unit Table 函式 (PU_TAB)
Initializable Value Table (INITV_TAB)
Initializable Object Table (INTIO_TAB)
Block Table 塊數據 (BLK_TABLE)
Array Bounds Table 數據上下界 (ARB_TAB)
Field Table 成員表 (FLD_TAB)
Constant Table 實數常量表 (TCON_TAB)
String Table 內部使用的字元串 (STR_TAB)
Constant String Table 字元串常量 (TCON_STR_TAB)
Label Table 標籤 (LABEL_TAB)
Symbol Attributes Table 輔助信息 (ST_ATTR_TAB)
Type List (函式參數) (TYLIST_TAB)
Debug symbol Table (DST_TAB)
File Info (FILE_INFO)
BE_ST_TAB (後端專用)
... 其他自定義Map

局部結構

局部結構是指在PU內部使用的相關數據結構
Symbol Table (ST_TAB)
Initializable Object Table (INTIO_TAB)
Label Table 標籤 (LABEL_TAB)
Pseudo Register Table 偽暫存器 (PREG_TAB)
Symbol Attributes Table 輔助信息 (ST_ATTR_TAB)

使用方法

創建方法

New_<表名>
譬如對於 Symbol Table(ST_TAB),就是 New_ST

初始化方法

<表名>_Init,
例如 ST_Init()

IDX的使用

大部分表都可以拿到某一條數據的IDX (index), 後續可以直接通過IDX來

數據類型

WHIRL 之中使用的數據類型包括以下幾種:
B 邏輯型 (0或者1)
I1 8-bit 有符號整數
I2 16-bit 有符號整數
I4 32-bit有符號整數
I8 64-bit 有符號整數
U1 8-bit 無符號整數
U2 16-bit 無符號整數
U4 32-bit 無符號整數
U8 64-bit 無符號整數
A4 32-bit 地址(和U4類似)
A8 64-bit地址(和U8類似)
F4 32-bit IEEE 浮點數
F8 64-bit IEEE 浮點數
F10 80-bit IEEE 浮點數
F16 128-bit IEEE浮點數
FQ 128-bit SGI浮點數
C4 32-bit 複數 (64 bits total).
C8 64-bit 複數 (128 bits total).
CQ 128-bit 複數 (256 bits total).
V Void
M Struct
BS bits

歷史

WHIRL的歷史可以追溯到1970年代SGI的編譯研發工作之中。

相關詞條

熱門詞條

聯絡我們