zoukankan      html  css  js  c++  java
  • 编译器开发系列--Ocelot语言7.中间代码

    Ocelot的中间代码是仿照国外编译器相关图书Modern Compiler Implementation 中所使用的名为Tree 的中间代码设计的。顾名思义,Tree 是一种树形结构,其特征是简单,而且方便转换为机器语言。

    例如以下代码:

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

    会被转换成如下的中间代码:

    <<IR>> (G:编译原理自制编译器源码	esthello_ir.cb:1)
    variables:
    functions:
        <<DefinedFunction>> (G:编译原理自制编译器源码	esthello_ir.cb:1)
        name: main
        isPrivate: false
        type: int(int, char**)
        body:
            <<Assign>> (G:编译原理自制编译器源码	esthello_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:编译原理自制编译器源码	esthello_ir.cb:3)
            expr:
                <<Var>>
                type: INT32
                entity: argc
    

    组成中间代码的类如表11.1 所示。

    所有语句的节点都继承自Stmt 类,表达式的节点继承自Expr 类。

  • 相关阅读:
    CSS清浮动
    深入理解BFC
    深入理解CSS浮动
    CSS颜色模式转换器的实现
    深入理解CSS背景
    理解CSS前景色和透明度
    深入理解CSS六种颜色模式
    HTML学习目录
    深入理解display属性
    深入理解盒模型
  • 原文地址:https://www.cnblogs.com/joey-hua/p/6212544.html
Copyright © 2011-2022 走看看