Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 編譯器開發系列--Ocelot語言7.中間代碼,編譯器--ocelot

編譯器開發系列--Ocelot語言7.中間代碼,編譯器--ocelot

編輯:關於android開發

編譯器開發系列--Ocelot語言7.中間代碼,編譯器--ocelot


Ocelot的中間代碼是仿照國外編譯器相關圖書Modern Compiler Implementation 中所使用的名為Tree 的中間代碼設計的。顧名思義,Tree 是一種樹形結構,其特征是簡單,而且方便轉換為機器語言。

例如以下代碼:

int main(int argc, char** argv)
{
	return ++argc;
}

會被轉換成如下的中間代碼:

<<IR>> (G:\編譯原理\自制編譯器\源碼\test\hello_ir.cb:1)
variables:
functions:
    <<DefinedFunction>> (G:\編譯原理\自制編譯器\源碼\test\hello_ir.cb:1)
    name: main
    isPrivate: false
    type: int(int, char**)
    body:
        <<Assign>> (G:\編譯原理\自制編譯器\源碼\test\hello_ir.cb:3)
        lhs:
            <<Addr>>
            type: INT32
            entity: argc
        rhs:
            <<Bin>>
            type: INT32
            op: ADD
            left:
                <<Var>>
                type: INT32
                entity: argc
            right:
                <<Int>>
                type: INT32
                value: 1
        <<Return>> (G:\編譯原理\自制編譯器\源碼\test\hello_ir.cb:3)
        expr:
            <<Var>>
            type: INT32
            entity: argc

組成中間代碼的類如表11.1 所示。

所有語句的節點都繼承自Stmt 類,表達式的節點繼承自Expr 類。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved