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 + -
显示快捷键?