irgenerator.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 1,392 行 · 第 1/3 页
JAVA
1,392 行
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dup2_x2()
*/
public void visit_dup2_x2() {
throw new IllegalArgumentException("byte code not yet supported");
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_swap()
*/
public void visit_swap() {
throw new IllegalArgumentException("byte code not yet supported");
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iadd()
*/
public void visit_iadd() {
quadList.add(doBinaryQuad(BinaryQuad.IADD, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ladd()
*/
public void visit_ladd() {
quadList.add(doBinaryQuad(BinaryQuad.LADD, Operand.LONG));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fadd()
*/
public void visit_fadd() {
quadList.add(doBinaryQuad(BinaryQuad.FADD, Operand.FLOAT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dadd()
*/
public void visit_dadd() {
quadList.add(doBinaryQuad(BinaryQuad.DADD, Operand.DOUBLE));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_isub()
*/
public void visit_isub() {
quadList.add(doBinaryQuad(BinaryQuad.ISUB, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lsub()
*/
public void visit_lsub() {
quadList.add(doBinaryQuad(BinaryQuad.LSUB, Operand.LONG));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fsub()
*/
public void visit_fsub() {
quadList.add(doBinaryQuad(BinaryQuad.FSUB, Operand.FLOAT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dsub()
*/
public void visit_dsub() {
quadList.add(doBinaryQuad(BinaryQuad.DSUB, Operand.DOUBLE));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_imul()
*/
public void visit_imul() {
quadList.add(doBinaryQuad(BinaryQuad.IMUL, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lmul()
*/
public void visit_lmul() {
quadList.add(doBinaryQuad(BinaryQuad.LMUL, Operand.LONG));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fmul()
*/
public void visit_fmul() {
quadList.add(doBinaryQuad(BinaryQuad.FMUL, Operand.FLOAT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dmul()
*/
public void visit_dmul() {
quadList.add(doBinaryQuad(BinaryQuad.DMUL, Operand.DOUBLE));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_idiv()
*/
public void visit_idiv() {
quadList.add(doBinaryQuad(BinaryQuad.IDIV, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ldiv()
*/
public void visit_ldiv() {
quadList.add(doBinaryQuad(BinaryQuad.LDIV, Operand.LONG));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fdiv()
*/
public void visit_fdiv() {
quadList.add(doBinaryQuad(BinaryQuad.FDIV, Operand.FLOAT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ddiv()
*/
public void visit_ddiv() {
quadList.add(doBinaryQuad(BinaryQuad.DDIV, Operand.DOUBLE));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_irem()
*/
public void visit_irem() {
quadList.add(doBinaryQuad(BinaryQuad.IREM, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lrem()
*/
public void visit_lrem() {
quadList.add(doBinaryQuad(BinaryQuad.LREM, Operand.LONG));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_frem()
*/
public void visit_frem() {
quadList.add(doBinaryQuad(BinaryQuad.FREM, Operand.FLOAT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_drem()
*/
public void visit_drem() {
quadList.add(doBinaryQuad(BinaryQuad.DREM, Operand.DOUBLE));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ineg()
*/
public void visit_ineg() {
int s1 = stackOffset - 1;
variables[s1].setType(Operand.INT);
quadList.add(new UnaryQuad(address, currentBlock, s1, UnaryQuad.INEG, s1));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lneg()
*/
public void visit_lneg() {
int s1 = stackOffset - 2;
variables[s1].setType(Operand.LONG);
quadList.add(new UnaryQuad(address, currentBlock, s1, UnaryQuad.LNEG, s1));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fneg()
*/
public void visit_fneg() {
int s1 = stackOffset - 1;
variables[s1].setType(Operand.FLOAT);
quadList.add(new UnaryQuad(address, currentBlock, s1, UnaryQuad.FNEG, s1));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_dneg()
*/
public void visit_dneg() {
int s1 = stackOffset - 2;
variables[s1].setType(Operand.DOUBLE);
quadList.add(new UnaryQuad(address, currentBlock, s1, UnaryQuad.DNEG, s1));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ishl()
*/
public void visit_ishl() {
quadList.add(doBinaryQuad(BinaryQuad.ISHL, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lshl()
*/
public void visit_lshl() {
stackOffset -= 1;
int s1 = stackOffset - 2;
variables[s1].setType(Operand.LONG);
variables[stackOffset].setType(Operand.INT);
quadList.add(new BinaryQuad(address, currentBlock, s1, s1, BinaryQuad.LSHL, stackOffset));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ishr()
*/
public void visit_ishr() {
quadList.add(doBinaryQuad(BinaryQuad.ISHR, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lshr()
*/
public void visit_lshr() {
stackOffset -= 1;
int s1 = stackOffset - 2;
variables[s1].setType(Operand.LONG);
variables[stackOffset].setType(Operand.INT);
quadList.add(new BinaryQuad(address, currentBlock, s1, s1, BinaryQuad.LSHR, stackOffset));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iushr()
*/
public void visit_iushr() {
quadList.add(doBinaryQuad(BinaryQuad.IUSHR, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lushr()
*/
public void visit_lushr() {
stackOffset -= 2;
int s1 = stackOffset - 1;
variables[s1].setType(Operand.INT);
variables[stackOffset].setType(Operand.LONG);
quadList.add(new BinaryQuad(address, currentBlock, s1, s1, BinaryQuad.LUSHR, stackOffset));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iand()
*/
public void visit_iand() {
quadList.add(doBinaryQuad(BinaryQuad.IAND, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_land()
*/
public void visit_land() {
quadList.add(doBinaryQuad(BinaryQuad.LAND, Operand.LONG));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ior()
*/
public void visit_ior() {
quadList.add(doBinaryQuad(BinaryQuad.IOR, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lor()
*/
public void visit_lor() {
quadList.add(doBinaryQuad(BinaryQuad.LOR, Operand.LONG));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_ixor()
*/
public void visit_ixor() {
quadList.add(doBinaryQuad(BinaryQuad.IXOR, Operand.INT));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lxor()
*/
public void visit_lxor() {
quadList.add(doBinaryQuad(BinaryQuad.LXOR, Operand.LONG));
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_iinc(int, int)
*/
public void visit_iinc(int index, int incValue) {
variables[index].setType(Operand.INT);
BinaryQuad binaryQuad = new BinaryQuad(address, currentBlock, index, index, BinaryQuad.IADD, new IntConstant(incValue));
quadList.add(binaryQuad.foldConstants());
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_i2l()
*/
public void visit_i2l() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.LONG);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.I2L, stackOffset));
stackOffset += 2;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_i2f()
*/
public void visit_i2f() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.FLOAT);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.I2F, stackOffset));
stackOffset += 1;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_i2d()
*/
public void visit_i2d() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.DOUBLE);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.I2D, stackOffset));
stackOffset += 2;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_l2i()
*/
public void visit_l2i() {
stackOffset -= 2;
variables[stackOffset].setType(Operand.INT);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.L2I, stackOffset));
stackOffset += 1;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_l2f()
*/
public void visit_l2f() {
stackOffset -= 2;
variables[stackOffset].setType(Operand.FLOAT);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.L2F, stackOffset));
stackOffset += 1;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_l2d()
*/
public void visit_l2d() {
stackOffset -= 2;
variables[stackOffset].setType(Operand.DOUBLE);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.L2D, stackOffset));
stackOffset += 2;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_f2i()
*/
public void visit_f2i() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.INT);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.F2I, stackOffset));
stackOffset += 1;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_f2l()
*/
public void visit_f2l() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.LONG);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.F2L, stackOffset));
stackOffset += 2;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_f2d()
*/
public void visit_f2d() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.DOUBLE);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.F2D, stackOffset));
stackOffset += 2;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_d2i()
*/
public void visit_d2i() {
stackOffset -= 2;
variables[stackOffset].setType(Operand.INT);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.D2I, stackOffset));
stackOffset += 1;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_d2l()
*/
public void visit_d2l() {
stackOffset -= 2;
variables[stackOffset].setType(Operand.LONG);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.D2L, stackOffset));
stackOffset += 2;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_d2f()
*/
public void visit_d2f() {
throw new IllegalArgumentException("byte code not yet supported");
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_i2b()
*/
public void visit_i2b() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.BYTE);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.I2B, stackOffset));
stackOffset += 1;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_i2c()
*/
public void visit_i2c() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.CHAR);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.I2C, stackOffset));
stackOffset += 1;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_i2s()
*/
public void visit_i2s() {
stackOffset -= 1;
variables[stackOffset].setType(Operand.SHORT);
quadList.add(new UnaryQuad(address, currentBlock, stackOffset, UnaryQuad.I2S, stackOffset));
stackOffset += 1;
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lcmp()
*/
public void visit_lcmp() {
throw new IllegalArgumentException("byte code not yet supported");
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fcmpl()
*/
public void visit_fcmpl() {
throw new IllegalArgumentException("byte code not yet supported");
}
/**
* @see org.jnode.vm.bytecode.BytecodeVisitor#visit_fcmpg()
*/
public void visit_fcmpg() {
throw new IllegalArgumentException("byte code not yet supported");
}
/**
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?