Compilation 三地址码(TAC/3AC)

Compilation 三地址码(TAC/3AC),compilation,intermediate-language,Compilation,Intermediate Language,在阅读时,我偶然发现了“中级语言”和“3AC”这两个术语 据我所知,IL是源代码编译过程中的中间“步骤”。更具体地说,我正在阅读字节码(Java)和C 我解释它的方式(如果我错了,请纠正我)是 源代码1(例如Lisp)-> 中间语言(C)->汇编 语言->机器代码 源代码2(例如Java)->字节码 ->Java虚拟机 基于此,我很难看出三地址码(TAC/3AC)在哪里发挥作用,以及它的用途。三地址码(TAC)是大多数情况下使用的中间表示形式 编译器。它本质上是一种通用汇编语言,属于系统的低端

在阅读时,我偶然发现了“中级语言”和“3AC”这两个术语

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

我解释它的方式(如果我错了,请纠正我)是

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

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

基于此,我很难看出三地址码(TAC/3AC)在哪里发挥作用,以及它的用途。三地址码(TAC)是大多数情况下使用的中间表示形式 编译器。它本质上是一种通用汇编语言,属于系统的低端 中级国税局。2、3或4地址码的一些变体通常用作IR, 因为它可以很好地映射到大多数汇编语言

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

//Expresion
        a = b * c + b * d;
//3AC
        _t1 = b * c;
        _t2 = b * d;
        _t3 = _t1 + _t2;
        a = _t3;
资料来源: