【问题标题】:Three Address Code (TAC / 3AC)三地址码 (TAC / 3AC)
【发布时间】:2010-10-20 20:42:11
【问题描述】:

在阅读时,我遇到了“中级语言”和“3AC”这两个术语。

据我了解,IL 是源代码编译过程中的中间“步骤”。更具体地说,我正在阅读字节码 (Java) 和 C。

我的解释方式(如果有错请纠正我)是;

源代码 1(例如 Lisp)-> 中间语言 (C) -> 汇编 语言 -> 机器码

源代码 2(例如 Java)-> 字节码 -> Java 虚拟机

因此,基于此,我正在努力了解三地址代码 (TAC/3AC) 在哪里发挥作用,以及它的用途。

【问题讨论】:

    标签: compilation intermediate-language


    【解决方案1】:

    三地址码 (TAC) 是大多数使用的中间表示 编译器。它本质上是一种通用的汇编语言,属于低端的 中级IR。 2、3 或 4 地址码的一些变体相当普遍地用作 IR, 因为它可以很好地映射到大多数汇编语言。

    一条 TAC 指令最多可以有三个操作数。操作数可以是两个操作数 到二元算术运算符,第三个是结果位置,或操作数 比较零和要分支到的第二个位置,依此类推。例如,在下面 顶部是算术表达式,底部是 TAC 的翻译 说明:

    //Expresion
            a = b * c + b * d;
    //3AC
            _t1 = b * c;
            _t2 = b * d;
            _t3 = _t1 + _t2;
            a = _t3;
    

    来源:http://web.archive.org/web/20151010192637/http://www.dound.com/courses/cs143/handouts/17-TAC-Examples.pdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 2012-01-15
      • 2013-04-27
      • 2015-05-30
      • 2020-01-04
      • 2012-05-11
      相关资源
      最近更新 更多