⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ifthenelseexp.java

📁 编译原理大作业---tiger编译器 包括semant,translate,mipsframe,regalloc等所有phase 懂的人自会知道
💻 JAVA
字号:
package Translate;class IfThenElseExp extends Exp {   Exp cond, a, b;   Temp.Label t;   Temp.Label f;   Temp.Label join;   IfThenElseExp(Exp cc, Exp aa, Exp bb) { cond=cc; a=aa; b=bb; }   // ------- unCx --------   public Tree.Stm unCx(Temp.Label tt, Temp.Label ff) {      t = new Temp.Label();      f = new Temp.Label();      return new Tree.SEQ(                cond.unCx(t,f),                new Tree.SEQ(                   new Tree.SEQ(                      new Tree.LABEL(t),                      new Tree.CJUMP(Tree.CJUMP.NE,new Tree.CONST(0),a.unEx(),tt,ff)),                   new Tree.SEQ(                      new Tree.LABEL(f),                      new Tree.CJUMP(Tree.CJUMP.NE,new Tree.CONST(0),b.unEx(),tt,ff))));   }   // ------- unEx --------   public Tree.Exp unEx() {      Temp.Temp r= new Temp.Temp();       t = new Temp.Label();       f = new Temp.Label();       join = new Temp.Label();   return new Tree.ESEQ(             new Tree.SEQ(                new Tree.SEQ(                   cond.unCx(t,f),                   new Tree.SEQ(                      new Tree.SEQ(                         new Tree.LABEL(t),                         new Tree.MOVE(                            new Tree.TEMP(r),                            a.unEx())),                      new Tree.JUMP(join))),                new Tree.SEQ(                   new Tree.SEQ(                      new Tree.SEQ(                         new Tree.LABEL(f),                         new Tree.MOVE(                            new Tree.TEMP(r),                            b.unEx())),                      new Tree.JUMP(join)),                   new Tree.LABEL(join))),             new Tree.TEMP(r));   }   // ------- unNx --------   public Tree.Stm unNx() {      t = new Temp.Label();      f = new Temp.Label();      join = new Temp.Label();     Temp.Temp r = new Temp.Temp();     return  new Tree.SEQ(                new Tree.SEQ(                   cond.unCx(t,f),                   new Tree.SEQ(                      new Tree.SEQ(                         new Tree.LABEL(t),                         new Tree.MOVE(                            new Tree.TEMP(r),                            a.unEx())),                      new Tree.JUMP(join))),                new Tree.SEQ(                   new Tree.SEQ(                      new Tree.SEQ(                         new Tree.LABEL(f),                         new Tree.MOVE(                            new Tree.TEMP(r),                            b.unEx())),                      new Tree.JUMP(join)),                   new Tree.LABEL(join)));   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -